【问题标题】:Looping through GridView rows and Checking Checkbox Control循环遍历 GridView 行并检查复选框控件
【发布时间】:2011-08-10 05:30:13
【问题描述】:

我目前有一个 GridView,它显示学生表中的数据,这是我的 Grid 和关联的 SQLDataSource;

                      <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 中的每一行,然后找到 CheckBox,然后我需要检查复选框是否被选中。如果选中该复选框,我需要将标签模板字段中的值添加到数据库中的另一个表中。 我正在使用 C# 代码。 非常感谢任何帮助,在此先感谢!

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    你必须迭代 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
        }
    }
    

    【讨论】:

    • 那么这段代码会遍历GridView中的每一行,找到checkbox控件并检查checkbox是否被选中?如何从标签模板字段中获取值以插入数据库中的另一个表?谢谢
    • 如果GridView有分页,上面的答案只会循环当前页面的记录。
    【解决方案2】:

    循环喜欢

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

    【讨论】:

    • 看看能不能找到控件,然后就可以使用它的所有属性,即var checkbox = row.FindControl("chkboxid") as CheckBox;
    • 我做了一个快速的调整,因为我对空异常持偏执的态度。 foreach (grid.Rows 中的 GridViewRow 行) { var chk = (CheckBox)row.FindControl("chkboxid"); if (chk != null && chk.Checked) { //读取标签 } }
    • 尽管我选中了复选框,但我总是被选中为 false,我使用的是 Vb.net
    猜你喜欢
    • 1970-01-01
    • 2014-03-02
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 2013-04-19
    相关资源
    最近更新 更多