以编程方式添加的复选框未找到

时间:2011-10-24 09:15:11

标签: c# asp.net

我按这样添加复选框:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        CheckBox FieldCh = new CheckBox();
        FieldCh.ID = "Field_" + Field.Id;
        Panel1.Controls.Add(FieldCh);
    }
}

但是当我尝试从表单中获取此复选框时:

foreach (Control item in FindControl("FieldForm").Controls)
  {
   if (item is Panel)
    {
      foreach (Control checkbox in item.Controls)

我找不到这个复选框:/这可能是runat = server的问题?我在Checkbox中找不到这个属性..

3 个答案:

答案 0 :(得分:3)

如果你想在PostBack之后找到这个CheckBox(我假设的话),你需要重新创建它。尝试用if(!PostBack)子句创建这个CheckBox(因此它也会在回发后重新创建):

protected void Page_Load(object sender, EventArgs e)
{
    CheckBox FieldCh = new CheckBox();
    FieldCh.ID = "Field_" + Field.Id;
    Panel1.Controls.Add(FieldCh);
    if (!IsPostBack)
    {
         // ....        
    }
}

答案 1 :(得分:1)

您必须使用Page_Load甚至动态添加控件。

protected void page_load()
{
CheckBox FieldCh = new CheckBox();
FieldCh.ID = "Field_" + Field.Id;
Panel1.Controls.Add(FieldCh);
}

答案 2 :(得分:0)

您可以使用更好的方法找到您的控件

只需使用此

CheckBox chkBox = this.form1.FindControl("YourControlId") as CheckBox;