我有一个在 CreateChildControls 方法上动态移动一些 web 控件的用户控件。当将此控件用于以下页面时:
<myControls:MyUserControl runat="server" ID="myUserControl" />
它完美无缺。
但是,如果我想将该 userControl 动态添加到如下页面中:
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:PlaceHolder runat="server" ID="plhControls" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button runat="server" ID="btnAdd" OnClick="btnAdd_Click" />
。CS
protected void btnAdd_Click(object sender, EventArgs e)
{
MyUserControl myUserControl =(MyUserControl)LoadControl("~/Controls/MyUserControl.ascx");
myUserControl.ID = "test";
plhControls.Controls.Add(myUserControl );
}
它在我的 CreateChildControls 中崩溃并出现错误:在 DataBind、Init、Load、PreRender 或 Unload 阶段无法修改控件集合。
确切的做法是当我将 webControls 添加到我的 UserControl 内的占位符时:
plhContent.Controls.Add(myWebControl);
所以我不明白为什么在这种情况下,当我动态添加我的 UserControl 时,我无法在 CreateChildControls 事件中移动 Web 控件。