Допустим, у меня есть пользовательский элемент управления, который выглядит следующим образом
<cc:MyControl runat="server" ID="myc" LinkControlID="NewParent" />
и на той же странице:
<asp:TextBox runat="server" ID="NewParent" />
Что я хотел бы сделать, так это изменить в MyControl родителя NewParent, чтобы он был частью коллекции Controls в MyControl. Когда я пытаюсь сделать это из OnInit, я получаю:
Невозможно изменить коллекцию элементов управления на этапах DataBind, Init, Load, PreRender или Unload.
Что имеет смысл, но есть ли способ обойти это? Я в порядке, если NewParent остается дочерним элементом страницы до тех пор, пока из MyControl я могу каким-то образом перенаправить рендеринг в элемент управления MyControl.
Можно ли это сделать? Спасибо.
EDIT
Для пояснения вот макет MyControl:
public class MyControl : Panel
{
protected override void OnInit(System.EventArgs e)
{
base.OnInit(e);
if (!String.IsNullOrEmpty(LinkControlID))
{
Control link = Parent.FindControl(LinkControlID);
if (link != null)
{
Controls.Add(link);
}
}
}
public string LinkControlID { get; set; }
}
Это предполагает, что MyControl и LinkControlID размещены на одном уровне в древовидной иерархии, что нормально в моем случае.