簡體   English   中英

如何從帶有子GridView的GridView獲取復選框值

[英]How to get checkbox value from a gridview with a child gridview

有人可以告訴我單擊按鈕時如何獲取選中的行的列表(嵌套網格的復選框值(ID =“ nestedGridView”)和每個選定行的docnumber值)嗎?

<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>

首先獲取對子GridView的引用,然后使用FindControl在其中獲取CheckBox:

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
                    }
                }
            }
        }
    }
}

您可以通過DataRow GridView並將其轉換為CheckBox來獲取它:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM