获取asp:gridview中的复选框状态

时间:2012-12-17 20:42:14

标签: asp.net vb.net

我已经设置了一个gridview来包含一列复选框,如下所示:

                    <asp:TemplateField HeaderText = "Editor">
                        <ItemTemplate>
                             <asp:CheckBox ID="chkRemove" runat="server" AutoPostBack="false" Checked='<%#currentMember(Eval("GroupID")) %>' />
                        </ItemTemplate>
                    </asp:TemplateField>

函数currentMember返回true或false。

用户可以取消选中行以删除成员状态。

现在,一旦用户点击提交,我如何确定用户取消选中哪些行,以便我可以更新数据库?

3 个答案:

答案 0 :(得分:2)

将以下代码放入提交按钮单击处理程序

for (int i = 0; i < gridView.Rows.Count; i++)
{
    CheckBox cbox = (CheckBox)gridView.Rows[i].FindControl("chkRemove");
    if(cbox.Checked){
        //DO DATABASE STUFF
    }
}   

答案 1 :(得分:1)

在您的事件处理程序代码中,执行以下步骤

获取行:

GridViewRow row = GridView1.Rows

然后,对于每一行,找到CheckBox控件:

CheckBox checkBox = row.FindControl("chkRemove")

查看控件是否未选中:

checkBox.Checked == false

最后,将您绑定为数据键的记录ID收集到GridView:

int id = (int)GridView1.DataKeys[row.RowIndex].Value;

现在您应该拥有更新数据库所需的信息

答案 2 :(得分:1)

这与接受的答案相同,但使用C#编程约定。接受的答案使用了Java中也使用的C / C ++约定。这没有错,但不赞成。

 protected void Button1_Click(object sender, EventArgs e)
        {
            GridViewRowCollection rows = ItemsGridView.Rows;

            foreach (GridViewRow gvr in rows){
                CheckBox chk = (CheckBox)gvr.FindControl("chkremove");
                if (chk.Checked)
                {
                    //Do stuff here
                }
            }
        }