没有在page_load上创建控件

时间:2010-01-21 18:54:23

标签: c# .net asp.net

我有一个包含2个单选按钮和其他文本框和标签的Asp页面。事情是,当选择单选按钮时,我必须让它们中的一些消失(不可见)。

我考虑使用ControlCollection并添加我需要使其不可见的控件。但是一旦我将它们带到ControlCollection,它们就会从我的网页中消失。我不明白为什么。

C#代码:

private void createGroup()
{
    ControlCollection cc = CreateControlCollection();
    cc.Add(txt1);
    cc.Add(txt2);
    // and so on...
}

如果我在Page_Load()事件上调用此函数,则页面上没有控件。

由于

3 个答案:

答案 0 :(得分:2)

您是否尝试过为单选按钮选择处理程序中的每个控件设置Visible=false

  void YourRadioButton_CheckChanged(Object sender, EventArgs e) 
  {

     txt1.Visible = !YourRadioButton.Checked;
     txt2.Visible = !YourRadioButton.Checked;
     // and so on... 
  }

如果您想在页面加载中创建控件集合以简化操作,只需创建List<WebControl>

List<WebControl> yourControls = new List<WebControl>();
//...

protected void Page_Load(object sender, EventArgs e)
{
    yourControls.Add(txt1);
    yourControls.Add(txt2);
    // and so on... 
}

答案 1 :(得分:1)

Page对象已经有一组名为Controls的控件。你可以这样做:

  void YourRadioButton_CheckChanged(Object sender, EventArgs e) 
  {
     foreach(Control control in this.Controls)
     {
         if(control is Textbox)
         {
             // do something
         }
     }
  }

答案 2 :(得分:0)

应在PreInit事件中创建动态控件。阅读ASP.NET page lifecycle