我已经设置了一个gridview来包含一列复选框,如下所示:
<asp:TemplateField HeaderText = "Editor">
<ItemTemplate>
<asp:CheckBox ID="chkRemove" runat="server" AutoPostBack="false" Checked='<%#currentMember(Eval("GroupID")) %>' />
</ItemTemplate>
</asp:TemplateField>
函数currentMember返回true或false。
用户可以取消选中行以删除成员状态。
现在,一旦用户点击提交,我如何确定用户取消选中哪些行,以便我可以更新数据库?
答案 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
}
}
}