【发布时间】:2010-05-07 13:47:33
【问题描述】:
我想在运行时在面板中显示不同的控件,具体取决于菜单选择。
有什么想法吗?
【问题讨论】:
-
这个问题太模棱两可了。
标签: asp.net vb.net user-controls
我想在运行时在面板中显示不同的控件,具体取决于菜单选择。
有什么想法吗?
【问题讨论】:
标签: asp.net vb.net user-controls
1) 在 Visible = false 的父页面内添加所有用户控件。根据菜单选择,使 Visible = true。
优点 - 易于实施
缺点 - 昂贵。每个用户控件的 Load 事件都会在父页面被加载时调用。
2) 将控件动态加载到占位符。
this.PlaceHolder1.Controls.Add(child);
优点 - 重量轻。
缺点 - 如果父页面想要在回发后从用户控件中检索数据,则需要编写一些代码。
【讨论】:
将所有可能的控件放在面板中,然后(假设您使用的是 ASP.Net Menu 控件)将相应控件的 .Visible 属性设置为 True 并将所有其他控件的 .Visible 属性设置为False 在MenuItemClick 事件中。
【讨论】:
你只需要实例化你想要的控件并通过
添加它YourPanel.Controls.Add(yourcontrol)
我觉得在VB里应该差不多吧。
【讨论】:
如果您希望所有控件始终可用(用于数据共享),您需要按照 Joel 的建议进行操作。但是,从语法上讲,如果您将菜单项与 Page_OnLoad() 中的控件相关联,就像这样:
Control1.Visible = MenuItem1.Selected;
Control2.Visible = MenuItem1.Selected || MenuItem2.Selected;
Control3.Visible = MenuItem3.Selected;
希望对您有所帮助。
【讨论】: