【发布时间】:2011-10-10 05:42:07
【问题描述】:
我在 asp.net 中有一个用户控件,我只想在运行时在一个单独的表格中的单个网页中多次添加用户控件。如何做到这一点?
谢谢
【问题讨论】:
标签: asp.net vb.net webpage webusercontrol
我在 asp.net 中有一个用户控件,我只想在运行时在一个单独的表格中的单个网页中多次添加用户控件。如何做到这一点?
谢谢
【问题讨论】:
标签: asp.net vb.net webpage webusercontrol
使用 Page.LoadControl 方法动态创建用户控件实例,并将其添加到父控件,如:
var uc = Page.LoadControl("~/uc.ascx");
this.Panel1.Controls.Add(uc);
每次页面回发时,您都必须重新创建 UC,仅供参考。
【讨论】:
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 中可以使用,但应该仍然可以使用。
【讨论】:
为了能够引用每个创建的控件,您必须为每个控件分配一个唯一的 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
【讨论】: