当我点击按钮时,我正试图隐藏页面上的所有面板。
这是在母版页内的网页内容表格中。
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) { }
这也不起作用。
知道我在这里缺少什么吗?
答案 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是动态的吗?
这是我刚刚尝试的......
创建仅包含一个Place Holder的母版页
<asp:ContentPlaceHolder id="MainContent" runat="server">
</asp:ContentPlaceHolder>
在default.aspx中,添加了两个Panels和Button,你的第一个代码剪辑工作得很好......
foreach(控制c in Page.Form.FindControl( “搜索Maincontent”)。控件) { if(c是Panel){ c.Visible = false; }}