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

发布于 2024-08-31 08:22:52 字数 498 浏览 4 评论 0原文

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

这是在母版页内的 Web 内容表单上。

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) { }

但这也不起作用。

知道我在这里缺少什么吗?

I'm trying to hide all panels on a page, when a button click occurs.

This is on a web content form, within a master page.

The contentplageholder is named: MainContent

So I have:

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

This never find any panels. The panels are within an Update Panel, and I tried

foreach(Control c in updatePanel.Controls) { }

and this didn't work either. I also tried :

foreach(Control c in Page.Controls) { }

and that didn't work either.

Any idea what I'm missing here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

世态炎凉 2024-09-07 08:22:52

你必须递归地遍历控制树

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);
    }
}

you have to recursively traverse the control tree

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);
    }
}
和我恋爱吧 2024-09-07 08:22:52

面板是动态的吗?

这是我刚才尝试的...

  1. 创建一个只有一个占位符的母版页

    
    
    
    
  2. 在default.aspx 中,添加了两个面板和按钮,并且您的第一个代码片段工作得很好...

foreach(控制c中
Page.Form.FindControl("MainContent").Controls)
{
if (c 是面板) {
c.可见=假;
} }

Are the Panels dynamic?

Here is what I tried just now...

  1. Create a master page with only one Place Holder

    <asp:ContentPlaceHolder id="MainContent" runat="server">
    
    </asp:ContentPlaceHolder>
    
  2. In default.aspx, added two Panels and Button, and your first code snipped worked just fine...

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文