代码之家  ›  专栏  ›  技术社区  ›  ALOToverflow

页面加载时未创建控件

  •  0
  • ALOToverflow  · 技术社区  · 15 年前

    我有一个包含2个单选按钮和其他文本框和标签的ASP页面。问题是,当选择了一个单选按钮时,我必须使其中的一些消失(不可见)。

    我考虑过使用ControlCollection并添加我需要使其不可见的控件。但一旦我把它们放到ControlCollection中,它们就会从我的网页上消失。我不知道为什么。

    C代码:

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

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

    谢谢

    3 回复  |  直到 15 年前
        1
  •  2
  •   jball    15 年前

    你试过简单的设置吗 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... 
    }
    
        2
  •  1
  •   KevnRoberts    15 年前

    页面对象已经有一个称为控件的控件集合。你可以这样做:

      void YourRadioButton_CheckChanged(Object sender, EventArgs e) 
      {
         foreach(Control control in this.Controls)
         {
             if(control is Textbox)
             {
                 // do something
             }
         }
      }
    
        3
  •  0
  •   Darin Dimitrov    15 年前

    动态控件应在 PreInit 事件。阅读有关 ASP.NET page lifecycle .