【问题标题】:Dynamically add multiple instances of the same user control type when button is clicked单击按钮时动态添加相同用户控件类型的多个实例
【发布时间】:2009-01-14 19:58:51
【问题描述】:
是否可以在单击“添加”按钮并维护 ViewState 时添加相同用户控件的实例?
这里的用户界面类似于Gmail文件附加过程,用户可以点击“附加另一个文件”,然后出现另一个文件上传框。
我的页面被一个更新面板包围。我能够加载 1 个控件,但按钮的单击事件在 Placeholder_Init 方法之后触发。我尝试在 ViewState 中存储一个整数来跟踪应该呈现的用户控件的数量,但在 ViewState 恢复之前也会触发 Init 方法。
谢谢!
【问题讨论】:
标签:
c#
asp.net
.net-3.5
user-controls
【解决方案1】:
在 ASP.NET 中动态添加多个控件很容易。假设您在 ASPX 文件中声明了一个名为 Panel 的面板,并且您有一个名为 MyControl 的自定义控件。
在您的 Page_Load 函数(或者实际上几乎任何地方)中,添加如下内容:
for (int i = 0; i < NumberOfAttachments; i++) {
Panel.Controls.Add(new MyControl());
}
这也适用于 UpdatePanels,但如果您没有在子回发时更新它,则需要调用 .Update() 函数以使其在客户端更新。