无法访问按钮上的复选框值c#

时间:2012-11-25 22:14:32

标签: c# asp.net

我将数据绑定到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); }

我认为是相关部分。

1 个答案:

答案 0 :(得分:3)

创建动态控件时,将创建它们的代码(即CheckBoxes)放在Page_Init而不是Page_Load中。 您还应该仔细检查每个回发中创建复选框的订单和他们收到的 ID 是否相同。
如果由于某些原因{@ 1}}在回发之间发生了变化,您应该想到一个更好的逻辑,在这个逻辑中您可以选中复选框。