2012-08-05 86 views
0

有人可以告訴我如何獲取選中行的列表(嵌套網格的複選框值(ID =「nestedGridView」)和每個選定行的docnumber值)何時我點擊一個按鈕?如何從gridview中獲取複選框的值和子gridview

<asp:GridView ID="gvMaster" runat="server" AllowPaging="True" 
AutoGenerateColumns="False" DataKeyNames="Accountkey" 
DataSourceID="SqlDataSource1" OnRowDataBound="gvMaster_RowDataBound"> 
    <Columns> 
    <asp:TemplateField> 
     <ItemTemplate> 
     <a href="javascript:cx('customerID-<%# Eval("Accountkey") %>');"> 
      <img id="imagecustomerID-<%# Eval("Accountkey") %>" 
      alt="Click to show/hide orders" border="0" src="Border.png" /> 
     </a> 
     <asp:CheckBox ID="chkselect" Checked="false" runat="server" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:BoundField DataField="Accountkey" /> 
    <asp:BoundField DataField="fullname" /> 
    <asp:TemplateField> 
     <ItemTemplate> 
     <tr><td colspan="100%"> 
      <div id="customerID-<%# Eval("Accountkey") %>" style="..."> 
      <asp:GridView ID="nestedGridView" runat="server" 
       AutoGenerateColumns="False" DataKeyNames="Id"> 
       <Columns> 
       <asp:TemplateField> 
        <ItemTemplate> 
        <asp:CheckBox ID="chkselect" Checked="false" 
         runat="server" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:BoundField DataField="Id" HeaderText="Id"/> 
       <asp:BoundField DataField="Valuedate" HeaderText="Valuedate"/> 
       <asp:BoundField DataField="Docnumber" HeaderText="Docnumber"/> 
       </Columns> 
      </asp:GridView> 
      </div> 
     </td></tr> 
     </ItemTemplate> 
    </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

回答

2

首先讓孩子GridView控件的引用,然後使用的FindControl進去的複選框:

foreach (GridViewRow row in gvMaster.Rows) 
{ 
    if (row.RowType == DataControlRowType.DataRow) 
    { 
     GridView gvChild = (GridView) row.FindControl("nestedGridView"); 
     // Then do the same method for check box column 
     if (gvChild != null) 
     { 
      foreach (GridViewRow row in gvChild .Rows) 
      { 
       if (row.RowType == DataControlRowType.DataRow) 
       { 
        CheckBox chk = (CheckBox) row.FindControl("chkselect"); 
        if (chk.Checked) 
        { 
         // do your work 
        } 
       } 
      } 
     } 
    } 
} 
+0

非常感謝你,它像一個魅力工作。 – user1577242 2012-08-05 17:45:13

+0

歡迎您 – 2012-08-05 18:30:56

1

你可以得到它通過的DataRow GridView和鑄造控制的複選框:

foreach (GridViewRow row in gvMaster.Rows) 
{ 
    if (row.RowType == DataControlRowType.DataRow) 
    { 
     CheckBox chk = row.FindControl("chkselect") as CheckBox; 
     if (chk.Checked) 
     { 
      // do your work 
     } 
    } 
}