2010-05-07 85 views
1

我試圖隱藏頁面上的所有面板,當發生按鈕單擊時。在主頁面中隱藏網頁內容表單上的所有面板

這是在母版頁內的網頁內容表單上。

的contentplageholder被命名爲:搜索Maincontent

所以我必須:

foreach (Control c in Page.Form.FindControl("MainContent").Controls) { 
    if (c is Panel) { 
     c.Visible = false; 
    } 
} 

這永遠也找不到任何面板。該小組是一個更新面板中,我試圖

foreach(Control c in updatePanel.Controls) { }

,這也不能工作。我也試過:

foreach(Control c in Page.Controls) { } 

而且這也沒有工作。

任何想法我在這裏失蹤?

回答

2

你必須遞歸遍歷控制樹

HidePanels(Page.Form.FindControl("MainContent")) 

void HidePanels(Control parentControl){ 
    foreach (Control c in parentControl.Controls) { 
     if (c is Panel) 
     c.Visible = false; 
    if (c.Controls.Count > 0) 
      HidePanels(c); 
    } 
} 
0

是面板的動態?

這裏是我試過剛纔...

  1. 只有一個佔位

    <asp:ContentPlaceHolder id="MainContent" runat="server"> 
    
    </asp:ContentPlaceHolder> 
    
  2. Default.aspx中,增加了兩個面板和按鈕,創建一個母版頁你的第一個代碼片斷工作得很好...

foreach(對照c Page.Form.FindControl(「MainContent」)。Controls) { if(c is Panel){ c.Visible = false; }}

相關問題