2010-11-29 89 views
7

如何在頁面中動態加載用戶控件?
我有一個包含radioButtons的頁面。每次單擊單選按鈕時都會在頁面中加載用戶控件(.ascx)。
我在做什麼是在同一時間加載所有控件,但將其可見性設置爲false。當用戶單擊單選按鈕時,我將特定用戶控件的可見性設置爲true。
因此,我在每次回發中加載所有用戶控件。
有沒有其他可能的方式來做到這一點?動態加載用戶控件

回答

13

例如,在頁面上添加一個帶有「divControls」標識的runat服務器的div。

Asp允許您動態加載用戶控件「.ascx」。

下面的代碼應該可以解決您的問題。

Control ctrl = Page.LoadControl("UserControlPath"); 
divControls.Controls.Clear(); 
divControls.Controls.Add(ctrl); 
0

是否有任何具體的原因來保持在單個頁面的usercontrols?

在加載所有控件並將其設置爲可見時,考慮頁面視圖狀態。

我認爲有兩個可能的解決方案:

  1. 要麼創建主機不同的用戶控制和當在某些單選按鈕用戶點擊,重定向到相應的頁面seprate頁。

  2. 按需加載,即當用戶請求用戶控件時,只加載它,但刪除所有其他加載的用戶控件,因此頁面隨時只有一個用戶控件。

1

如果你不把它們放在列表中,並且在會話中列表中,你將會遇到很多麻煩。

Ghyath的方式是正確的,但你也應該將它們添加到List中。

List<Object> Usercontrols = new List<Objects>{}; 
Control ctrl = Page.LoadControl("UserControlPath"); 
Usercontrols.Add(ctrl); 
Session["Usercontrols"] = Usercontrols; 

在每次回發時,您需要使用列表中的控件重新加載div。 編輯:我糾正了最後一行。