我有一个GridView,它具有绑定字段和复选框的模板字段。我根据复选框写了一个删除记录的代码。我的问题是
HtmlInputCheckBox chk;
foreach(GridViewRow dr in dgvdetails.Rows)
{
chk = (HtmlInputCheckBox)dr.FindControl("ch");
chk.Checked = true;
if (chk.Checked)/// **here checkbox is not checked even if I'm check it**
{
pl.id = int.Parse(chk.Value);
bl.deletedgvdetails(pl);
}
}
答案 0 :(得分:0)
有两件事可以在这里发挥作用。我不确定您的代码何时运行 - 关于页面生命周期 - 但如果在按钮单击事件中处理它,您可能希望确保您的网格视图在页面事件期间没有“反弹”在按钮点击事件触发之前运行的Page_Load。如果是这种情况,在删除方法运行之前,所有复选框都将重新初始化。
其次,在foreach循环中,您可能需要注意当前行的RowType。循环的第一次迭代可能集中在Header Row上(如果你为GridView启用了它),因此可能没有复选框。
如果你使用e.Row.FindControl(),那么检查if(chk!= null){}总是一个好主意 - 以防万一。