2010-01-21 27 views
0

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

我想过如何使用ControlCollection并添加控件我需要让它看不见。但只要我把它们放到ControlCollection中,它们就会从我的网页中消失。我不知道为什么。

C#代码:

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

如果我呼吁在Page_Load此功能()事件中,没有控制在页面上。

感谢

+0

我不认为的ControlCollection是你所需要的:http://msdn.microsoft.com/en-us/library/system.web.ui.controlcollection.aspx – jball

+0

这就是为什么我要问stackoverflow的专家。 – ALOToverflow

回答

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... 
} 
+0

是的。这有效,但有很多。这就是为什么我想要一些控件的集合,所以我可以对收集进行一次foreach。 – ALOToverflow

+0

我明白了。我已经为此添加了一个解决方案。 – jball

+0

谢谢你的帮助。发现有一个Panel对象,如果将其可见属性设置为false,它将隐藏它所包含的所有内容。 – ALOToverflow

0

动态控制应在PreInit事件来创建。阅读关于ASP.NET page lifecycle

+0

控件已经在页面上,我只想要某种集合来遍历它们。 – ALOToverflow

+1

'this.Controls'集合是否有帮助? –

1

Page对象已经有一个名为Controls的控件集合。你可以做这样的事情:

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