2011-04-21 44 views
10

我目前有一个GridView显示学生表中的数据,这里是我的网格和关联的SQLDataSource;循环GridView行和检查复选框控件

     <asp:GridView ID="GridView2" 
         style="position:absolute; top: 232px; left: 311px;" 
          AutoGenerateColumns="false" runat="server" 
         DataSourceID="SqlDataSource4"> 
         <Columns> 
          <asp:TemplateField> 
          <ItemTemplate > 
          <asp:CheckBox runat="server" ID="AttendanceCheckBox" /> 
          </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField> 
          <ItemTemplate> 
          <asp:Label ID="studentIDLabel" Text='<%# Eval("StudentID") %>' runat="server"></asp:Label> 
          </ItemTemplate> 
          </asp:TemplateField>      
          <asp:BoundField DataField="Name" HeaderText="Name" /> 
         </Columns> 
        </asp:GridView> 

        <asp:SqlDataSource ID="SqlDataSource4" runat="server" 
         ConnectionString="<%$ ConnectionStrings:RegisterConnectionString %>" 
         SelectCommand="SELECT [StudentID], [Name] FROM [Student] WHERE CourseID = @CourseID ">       
         <SelectParameters> 
          <asp:ControlParameter ControlID="CourseDropDownList" Name="CourseID" 
           PropertyName="SelectedValue" Type="Int32" /> 
         </SelectParameters> 
        </asp:SqlDataSource> 

我在页面上一个按钮,当用户点击该按钮我通过在GridView的每一行需要循环,然后找到复选框,然后我需要检查,如果该复选框被选中与否。如果复选框被选中,我需要将标签模板字段中的值添加到数据库中的其他表格中。 我正在使用C#代码。 任何帮助非常感谢,提前感谢!

回答

32

环路像

foreach (GridViewRow row in grid.Rows) 
{ 
    if (((CheckBox)row.FindControl("chkboxid")).Checked) 
    { 
    //read the label    
    }    
} 
+0

如何读取标签中的值? – user715115 2011-04-21 14:05:48

+0

看看你是否可以找到控件,那么你可以使用它的所有属性,即 var checkbox = row.FindControl(“chkboxid”)作为CheckBox; – Jeremy 2015-07-23 18:38:19

+0

我做了一个快速的调整,因为我对空例外是偏执狂。 foreach(GridViewRow row in grid.Rows) var chk =(CheckBox)row.FindControl(“chkboxid”); 如果(CHK!= NULL && chk.Checked) {// 读取标签 }} – 2017-06-14 14:00:05

2

你必须遍历GridView的行

for (int count = 0; count < grd.Rows.Count; count++) 
{ 
    if (((CheckBox)grd.Rows[count].FindControl("yourCheckboxID")).Checked) 
    {  
     ((Label)grd.Rows[count].FindControl("labelID")).Text 
    } 
} 
+0

所以这个代码将通过每行中的GridView,发现该复选框控制和检查,看是否复选框被选中?如何从标签模板字段中的值插入到数据库中的另一个表中?谢谢 – user715115 2011-04-21 11:09:32

+1

如果GridView有分页功能,上面的答案只会循环浏览当前页面中的记录。 – ssmsnet 2015-04-21 12:55:21