我将数据绑定到Page_Load中的gridview,然后在同一个Page_Load中我添加了一列不属于数据绑定的复选框。
然后按下按钮时,我想检查是否检查了任何一个方框。但是,当我在button_click方法中查找复选框时,复选框似乎完全消失了。
我正在寻找他们
foreach (GridViewRow gvr in GridView1.Rows)
{
CheckBox cb = (CheckBox)gvr.FindControl("check" + gvr.Cells[2].Text);
...
}
我有预感他们可能会在回发时被摧毁,但我不确定如何确保这不会发生。
我的Page_Load方法中的所有内容都包含在if(!IsPostBack)语句中。
有人问我的page_load:
foreach (GridViewRow gvr in GridView1.Rows)
{
TableCell tc = new TableCell();
CheckBox cb = new CheckBox();
cb.ID = "check" + gvr.Cells[2].Text;
tc.Controls.AddAt(0, cb);
gvr.Cells.AddAt(0, tc);
}
TableCell tc = new TableCell();
CheckBox cb = new CheckBox();
cb.ID = "check" + gvr.Cells[2].Text;
tc.Controls.AddAt(0, cb);
gvr.Cells.AddAt(0, tc);
}
我认为是相关部分。
答案 0 :(得分:3)
创建动态控件时,将创建它们的代码(即CheckBoxes)放在Page_Init
而不是Page_Load
中。
您还应该仔细检查每个回发中创建复选框的订单和他们收到的 ID 是否相同。
如果由于某些原因{@ 1}}在回发之间发生了变化,您应该想到一个更好的逻辑,在这个逻辑中您可以选中复选框。