【问题标题】:how to add user control multiple times in runtime on a webpage in ASP.NET如何在运行时在 ASP.NET 的网页上多次添加用户控件
【发布时间】:2011-10-10 05:42:07
【问题描述】:

我在 asp.net 中有一个用户控件,我只想在运行时在一个单独的表格中的单个网页中多次添加用户控件。如何做到这一点?

谢谢

【问题讨论】:

    标签: asp.net vb.net webpage webusercontrol


    【解决方案1】:

    使用 Page.LoadControl 方法动态创建用户控件实例,并将其添加到父控件,如:

    var uc = Page.LoadControl("~/uc.ascx");
    this.Panel1.Controls.Add(uc);
    

    每次页面回发时,您都必须重新创建 UC,仅供参考。

    【讨论】:

    • 感谢您的回复。我还有一些疑问,这些是 - 如果我想添加多个用户控件,那么是否需要多个面板控件? & 当我像这样添加用户控件时,我如何在运行时访问特定的用户控件以进行进一步开发?
    • @Priyanka 一个面板可以有很多控件,因此一个面板中可以有尽可能多的 UC。那也行。您可以使用多个选项之一来访问控件。您可以将用户控件的引用存储在列表中并从列表中访问它。或者您可以稍后使用 Panel1.FindControl("ID") 访问它,或者在您调用 Page.LoadControl 时,如果您知道要对控件执行什么操作,那么您可以在此时执行此操作。只需将用户控件转换为正确的用户控件类类型。
    【解决方案2】:
    Dim tbl As New Table
    Dim tr1 As New TableRow
    tbl.Rows.Add(tr1)
    Dim td1 As New TableCell
    tr1.Cells.Add(td1)
    Dim ctl As New CustomControl
    ctl.Text = "Toto"
    td1.Controls.Add(ctl)
    

    这是一些旧代码,在 .net 1.1 中可以使用,但应该仍然可以使用。

    【讨论】:

      【解决方案3】:

      为了能够引用每个创建的控件,您必须为每个控件分配一个唯一的 id:

        Dim tempUserControl As UserControl
      
          tempUserControl = Page.LoadControl("~/UserControl1.ascx")
          tempUserControl.ID = "uniquename1"
          testPanel.Controls.Add(tempUserControl)
          tempUserControl = Page.LoadControl("~/UserControl1.ascx")
          tempUserControl.ID = "uniquename2"
          testPanel.Controls.Add(tempUserControl)
      

      然后您可以在以后的回发中访问该控件:

          Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
          Dim tempUserControl As WebUserControl1
          tempUserControl = testPanel.FindControl("uniquename1")
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多