比方說,我有一個看起來像這樣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