У меня есть usercontrol, который динамически перемещается по методу CreateChildControls некоторым веб-элементам управления.
При использовании этого элемента управления на страницу, как:
<myControls:MyUserControl runat="server" ID="myUserControl" />
Работает без нареканий.
Но если я хочу динамически добавить пользовательский элемент управления на страницу, например:
<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);
Поэтому я не понимаю, почему в этом случае я не могу переместить веб-элемент управления внутри события CreateChildControls, когда я динамически добавляю свой UserControl.