2009-07-09 35 views
4

我有一個聲明瞭佔位符控件的ASPX頁面。以編程方式添加控件時未實例化的佔位符

在Codebehind中,我創建一個UserControl並將其添加到佔位符。

protected void Page_Load(object sender, EventArgs e) 
{ 
     UserControl uc = new ChartUserControl(); 
     myForm.Controls.Add(uc); 
} 

反過來,用戶控件有一個佔位符,但在Page_Load(用於用戶控件)當我這樣做:

protected void Page_Load(object sender, EventArgs e) 
{ 
    WebControl x = new WebControl(); 
    userControlPlaceholder.Controls.Add(x); 
} 

它讓我不要設置爲一個實例無處不在的「對象引用對象「異常。

我試過通過調用一個構造函數強制實例化,但這讓我陷入了其他麻煩。任何幫助,將不勝感激。

回答

8

我剛剛在這個上面花了4個小時。

的問題是,你與

ChartUserControl chart = new ChartUserControl(); 

創建用戶控制,但你必須使用LoadControl:

ChartUserControl chart = 
    (ChartUserControl)LoadControl("~/path/to/control/ChartUserControl.ascx"); 

顯然,LoadControl初始化用戶控件,以便其佔位符(和我會假設,它包含的其他控件),在使用它們時不會爲空。

+0

謝謝謝謝謝謝 - 這也讓我擺脫了一大堆鬥鬥。 – 2009-12-11 14:30:41

2

不是在Page_Load中添加控件,而是重寫CreateChildControls方法並將其添加到那裏。

+0

感謝您的提示,使很多道理。儘管得到完全相同的問題(我把它放在base.CreateChildControls();)之後。 – Chet 2009-07-09 16:00:21

相關問題