2010-01-21 29 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 
     } 
    } 
    } 
相關問題