GridView中的Asp.net CheckBox失去了它的价值

时间:2010-01-22 07:18:57

标签: asp.net webforms

我有一个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);
    }
}

1 个答案:

答案 0 :(得分:0)

有两件事可以在这里发挥作用。我不确定您的代码何时运行 - 关于页面生命周期 - 但如果在按钮单击事件中处理它,您可能希望确保您的网格视图在页面事件期间没有“反弹”在按钮点击事件触发之前运行的Page_Load。如果是这种情况,在删除方法运行之前,所有复选框都将重新初始化。

其次,在foreach循环中,您可能需要注意当前行的RowType。循环的第一次迭代可能集中在Header Row上(如果你为GridView启用了它),因此可能没有复选框。

如果你使用e.Row.FindControl(),那么检查if(chk!= null){}总是一个好主意 - 以防万一。