1

我已经设置了一个 gridview 来包含一列这样的复选框:

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

函数 currentMember 返回 true 或 false。

用户将能够取消选中行以删除成员状态。

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

4

3 回答 3

2

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

for (int i = 0; i < gridView.Rows.Count; i++)
{
    CheckBox cbox = (CheckBox)gridView.Rows[i].FindControl("chkRemove");
    if(cbox.Checked){
        //DO DATABASE STUFF
    }
}   
于 2012-12-17T20:49:15.397 回答
1

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

获取行:

GridViewRow row = GridView1.Rows

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

CheckBox checkBox = row.FindControl("chkRemove")

查看控件是否未选中:

checkBox.Checked == false

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

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

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

于 2012-12-17T20:47:59.980 回答
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
                }
            }
        }
于 2013-01-23T13:15:01.147 回答