0

我将数据绑定到 Page_Load 中的网格视图,然后在同一个 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);

            }

我认为是相关的部分。

4

1 回答 1

3

创建动态控件时,将创建它们的代码(即复选框)Page_Init放在Page_Load.
您还应该仔细检查复选框的创建顺序和它们收到的id在每个回发中是否相同。
如果由于某种原因gvr.Cells[2].Text在回发之间发生了变化,您可能应该考虑一个更好的逻辑来标识您的复选框。

于 2012-11-26T07:48:35.540 回答