将所有面板隐藏在母版页中的Web内容表单上

时间:2010-05-07 16:29:37

标签: asp.net controls panel foreach

当我点击按钮时,我正试图隐藏页面上的所有面板。

这是在母版页内的网页内容表格中。

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 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

Panels是动态的吗?

这是我刚刚尝试的......

  1. 创建仅包含一个Place Holder的母版页

    <asp:ContentPlaceHolder id="MainContent" runat="server">
    
    </asp:ContentPlaceHolder>
    
  2. 在default.aspx中,添加了两个Panels和Button,你的第一个代码剪辑工作得很好......

  3.   

    foreach(控制c in   Page.Form.FindControl( “搜索Maincontent”)。控件)   {       if(c是Panel){           c.Visible = false;       }}