如何动态添加用户控件中的用户控件
答
你想使用TemplateControl.LoadControl(这是页面,用户控制和母版页继承)。您需要在Init事件期间执行此操作,以便回发内容工作。
void Page_Init(Object Sender, EventArgs e) {
var control = LoadControl("Awesome.ascx");
// ... Magic!
}
答
将父用户控件的占位符控制:
<asp:PlaceHolder runat="server" id="phMainHolder" />
在Page_Load或Page_Init事件只需要简单的子用户控件中的(各)循环,并将它们添加到像例如占位符:
for(int i = 0; i < 10; i++) {
ChildUC child = new ChildIC();
phMainHolder.Controls.Add(child);
}
这是最低限度做到这一点。你当然可以选择设置属性或任何你的子控件。
ChildUC类是本示例的虚构类名。使用类,如果需要,请使用您要使用的用户控件的名称空间作为定义的额外名称。
@Xlll:这里的问题是我不能通过我的父控件获取ChildIc()。我错过了什么吗? – 2010-07-21 08:22:38
这里要确定的一件事是,您需要在每个页面上生成控件,其他明智的(意味着当您动态生成控件时不要放置条件!Page.IsPostBack)。 – shailesh 2010-07-21 15:15:16