比方说,我有一个看起来像这样ASP.NET动态重新控制在控制树
<cc:MyControl runat="server" ID="myc" LinkControlID="NewParent" />
,并在同一页上的自定义控制:
<asp:TextBox runat="server" ID="NewParent" />
我想do是,从MyControl中,更改NewParent的父项,以便它将成为MyControl的Controls集合的一部分。当我尝试这样做时,从OnInit得到:
在DataBind,Init,Load,PreRender或Unload阶段无法修改控件集合。
这是有道理的,但有没有办法解决这个问题?我很好,如果NewParent仍然是页面的子项,只要从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被放置在树层次结构中的同一级别,这是在我的情况OK 。
我想你是在谈论从页面本身或两个控件的父项这样做。从页面上做起。我可以将你写的代码放在页面的OnInit中,它可以正常工作。问题是当一个控件试图围绕一个兄弟移动时。父级(在本例中为页面本身)似乎能够做到这一点,但不能在同一树级别上工作。 我可以做你的建议,但对我来说这将是更多的维修工作;我宁愿控制本身照顾,再加上我需要调整在MyControl中应该添加/呈现的位置。谢谢。 – pbz 2009-06-02 16:49:40