【问题标题】:Display dynamic Controls at run time在运行时显示动态控件
【发布时间】:2010-05-07 13:47:33
【问题描述】:

我想在运行时在面板中显示不同的控件,具体取决于菜单选择。

有什么想法吗?

【问题讨论】:

  • 这个问题太模棱两可了。

标签: asp.net vb.net user-controls


【解决方案1】:

1) 在 Visible = false 的父页面内添加所有用户控件。根据菜单选择,使 Visible = true。

优点 - 易于实施

缺点 - 昂贵。每个用户控件的 Load 事件都会在父页面被加载时调用。

2) 将控件动态加载到占位符。

this.PlaceHolder1.Controls.Add(child);

优点 - 重量轻。

缺点 - 如果父页面想要在回发后从用户控件中检索数据,则需要编写一些代码。

【讨论】:

    【解决方案2】:

    将所有可能的控件放在面板中,然后(假设您使用的是 ASP.Net Menu 控件)将相应控件的 .Visible 属性设置为 True 并将所有其他控件的 .Visible 属性设置为FalseMenuItemClick 事件中。

    【讨论】:

      【解决方案3】:

      你只需要实例化你想要的控件并通过

      添加它
      YourPanel.Controls.Add(yourcontrol)
      

      我觉得在VB里应该差不多吧。

      【讨论】:

      【解决方案4】:

      如果您希望所有控件始终可用(用于数据共享),您需要按照 Joel 的建议进行操作。但是,从语法上讲,如果您将菜单项与 Page_OnLoad() 中的控件相关联,就像这样:

      Control1.Visible = MenuItem1.Selected;
      Control2.Visible = MenuItem1.Selected || MenuItem2.Selected;
      Control3.Visible = MenuItem3.Selected;
      

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-28
        • 1970-01-01
        • 2011-05-18
        • 2012-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多