2017-09-20 72 views
0

如何让嵌套GridView控件按钮点击文本框的值的按钮,点击文本框的值如何让嵌套的GridView

<asp:GridView ID="GridView2" runat="server"> 

        <Columns> 
         <asp:TemplateField> 
          <ItemTemplate> 

            <asp:ImageButton ID="ImageButton1" runat="server" OnClick="Show_Hide_ChildGrid" ImageUrl="~/images/plus.png" CommandArgument="Show" Height="20" Width="20" /> 

           <asp:Panel ID="pnlOrders" runat="server" Style="display: none;"> 

            <asp:GridView ID="gvOrders" runat="server" OnRowCommand="gvOrders_RowCommand"> 
             <Columns> 


              <asp:TemplateField HeaderText="volNo"> 
               <ItemTemplate> 
                <asp:TextBox Width="90px" ID="txtVolume" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"Volume") %>'></asp:TextBox> 
               </ItemTemplate> 
               <HeaderStyle Width="91px" /> 
              </asp:TemplateField> 

              <asp:ButtonField ButtonType="Button" CommandName="Save" Text="Save" HeaderText="Save"> 
               <HeaderStyle Width="50px" /> 
              </asp:ButtonField> 

             </Columns> 


            </asp:GridView> 

           </asp:Panel> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:BoundField DataField="JournalName" HeaderText="JournalName" ></asp:BoundField> 

        </Columns> 

       </asp:GridView> 

我无法从孩子gridview的文本框的值。 其showes错误,此(gridview id)在当前上下文中不存在。 其中在父Gridview中工作正常。当我尝试与父Gridview 那么它的工作很好,意味着代码是正确的。我做的方式。可能是worng 所以请检查。设计部分和.cs部分均已发布。我还提到我在哪里得到错误

protected void gvOrders_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 



     if (e.CommandName == "Save") 
     { 
       int rowIndex = Convert.ToInt32(e.CommandArgument); 
       **GridViewRow row = gvOrders.Rows[rowIndex];** // Here i am getting error that gvOrders does not exit in the current context 

       //GridView GVCollapse = (GridView)sender; //find nested grid view 
       //GridViewRow row = (GridViewRow)GVCollapse.Parent.Parent; 

       //Fetch value of Name. 
       string Journal = (row.FindControl("txtJournalName") as TextBox).Text; 
       string Volume = (row.FindControl("txtVolume") as TextBox).Text; 
       string Issues = (row.FindControl("txtIssues") as TextBox).Text; 
       string DispatchDate = (row1.FindControl("txtDispatchDate") as TextBox).Text; 
       string Remarks = (row.FindControl("txtRemarks") as TextBox).Text; 



       ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Name: " + Journal + "\\nCountry: " + Volume + "\\nDate: " + DispatchDate + "');", true); 



     } 
    } 

回答

0

巴顿更换ButtonField字段:

<asp:TemplateField HeaderText="Save"> 
    <ItemTemplate> 
     <asp:Button ID="btnSave" CommandName="Save" runat="server" Text="Save" /> 
    </ItemTemplate> 
</asp:TemplateField> 

在RowCommand事件试试吧:

if (e.CommandName == "Save") 
{ 
    GridViewRow row = (GridViewRow)(((Button)e.CommandSource).NamingContainer); 
    GridView gv = (GridView)row.FindControl("gvOrders"); 

    string Journal = (row.FindControl("txtJournalName") as TextBox).Text; 
    //... some other code 
}  
+0

哇..谢谢你这么多..它的工作.. –

+0

其实我也想知道阿贾克斯日历将工作或不在儿童gridview文本框???因为我遇到问题。 –

+0

是的,它会工作,你可以发布一个单独的问题,该问题。 – AsifAli72090