【发布时间】:2010-10-30 14:06:05
【问题描述】:
假设我有一个看起来像这样的自定义控件
<cc:MyControl runat="server" ID="myc" LinkControlID="NewParent" />
并且,在同一页面上:
<asp:TextBox runat="server" ID="NewParent" />
我想做的是,从 MyControl 更改 NewParent 的父级,使其成为 MyControl 的 Controls 集合的一部分。当我尝试这样做时,从 OnInit 得到:
在 DataBind、Init、Load、PreRender 或 Unload 阶段不能修改控件集合。
这是有道理的,但有没有办法解决这个问题?我可以,如果 NewParent 仍然是 Page 的子项,只要从 MyControl 我可以以某种方式将呈现重定向到 MyControl 的控件。
这可以吗?谢谢。
编辑:
为了澄清这里是一个 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 在树层次结构中位于同一级别,这在我的情况下是可以的。
【问题讨论】: