【问题标题】:How to dynamically add user controls within a user control如何在用户控件中动态添加用户控件
【发布时间】:2010-07-21 08:14:08
【问题描述】:

我想创建一个用户控件,该控件将再次包含一个用户控件,该控件将动态生成并且可以针对数据表中存在的数据重复 N 次。

我该怎么做。

【问题讨论】:

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


    【解决方案1】:

    您想使用TemplateControl.LoadControl(Page、UserControl 和 MasterPage 都继承自)。您需要在 Init 事件期间执行此操作才能使回发的内容正常工作。

    void Page_Init(Object Sender, EventArgs e) {
        var control = LoadControl("Awesome.ascx");
        // ... Magic!
    }
    

    【讨论】:

      【解决方案2】:

      在父用户控件上放置一个占位符控件:

      <asp:PlaceHolder runat="server" id="phMainHolder" />
      

      在 Page_Load 或 Page_Init 事件中,您只需在 for(each) 循环中实例化子用户控件并将它们添加到占位符中,例如:

      for(int i = 0; i < 10; i++) {
          ChildUC child = new ChildIC();
          phMainHolder.Controls.Add(child);
      }
      

      这是最低限度的要求。当然,您可以选择在您的子控件上设置属性或其他内容。

      ChildUC 类是此示例的虚构类名。使用 ,如果需要,使用命名空间作为定义它的额外名称,您想要使用的用户控件。

      【讨论】:

      • @Xlll:这里的问题是我无法通过我的父控件获得 ChildIc()。我错过了什么吗?
      • 这里要确保的一点是,您需要在每个页面上生成控件以其他方式回发(意思是在动态生成控件时不要设置条件 !Page.IsPostBack)。
      猜你喜欢
      • 1970-01-01
      • 2017-01-06
      • 2017-01-10
      • 2010-12-07
      • 2010-09-27
      • 2012-12-10
      • 2012-02-11
      相关资源
      最近更新 更多