所謂動態載入,就是一開始不把使用者控制項直接新增到.aspx頁面上,而是根據需要從codebehind**那裡以程式設計方式新增。這樣做的好處是可以針對不同的需要載入不同的使用者控制項。要注意的是,我這裡說的載入的辦法是用codebehind時要做的,如果只是用塊在aspx頁面加**來實現這個,可能方法會不同,具體可以參看.*** framework sdk 文件,位址--點這裡
---。
下面來看codebehind的解決辦法。
這一句就是把***.ascx檔案裡的使用者控制項取出來,返回的是control型別
得到使用者控制項後,就可以把控制項加到頁面的某個容器控制項裡面
//宣告乙個容器
protected system.web.ui.webcontrols.placeholder placelogin;
//把剛才的控制項加到裡面
placelogin.controls.add(uclogin);
placeholder控制項是乙個專門用來乘放東西的控制項,在頁控制項層次結構中為以程式設計方式新增的控制項保留位置。
這樣基本工作就完成了,但是……要做的還有很多。如果只是這樣做的話,我們沒有辦法使用使用者控制項自定義的屬性和事件。因為這裡是載入了乙個control型別的控制項。要使用我們自己的控制項,需要做的就是把這個轉換成自己的控制項型別。從物件導向的角度來看,其實就是在同乙個命名空間裡做的兩個類之間的操作。
private uc_event uclogin;
private void page_load(object sender, system.eventargs e)
上面的**順便加了乙個設定屬性的語句,現在這個語句可以起作用。值得一提的是,vs.***一般在這裡會給出智慧型提示來讓你選擇需要的屬性。
還記得我們的uc_event控制項還有乙個logiin事件嗎?現在我們也可以使用這個事件,按照事件一般都放到 initialize***ponent()裡面,我們也可以把這個事件放到那裡,
private void initialize***ponent()
然後執行……出錯了吧~~~這是因為asp.***的頁面執行流程是 oninit --> page_load , initialize***ponent()在oninit裡面,所以就先執行這個,可是在執行這個的時候還沒有對uclogin進行具體的操作呢!
解決的辦法是把這個事件的訂閱放到設定屬性的後面
uclogin=(uc_event)loadcontrol("uc_event.ascx");
placelogin.controls.add(uclogin);
uclogin.boxbgcolor="#000000";
this.uclogin.login+=new prac.uc_event.loginhandler(uclogin_login);
這樣就沒有問題了。現在可以容易的根據條件進行不同控制項的載入了。
private uc_event uclogin;
private userck uck;
private void page_load(object sender, system.eventargs e)
}else
}要注意的是,雖然是根據條件載入不一樣的控制項,可是宣告的時候還是兩個都做比較方便。
總的來說,載入使用者控制項的過程其實就是乙個類在另乙個類裡面的引用,當然,這兩個類都在同一命名空間裡
。因為這些都是在codebehind裡面完成的,而且在宣告控制項例項的時候用的都是private級別的,所以也就不需要在.aspx頁面上放什麼東西了。
這是前面的.aspx頁面的全部內容:
<%@ page language="c#" codebehind="uc_load.aspx.cs" autoeventwireup="false" inherits="prac.uc_load" %>
我們的使用者控制項就新增在紅色部分。
WPF 動態載入使用者控制項
效果如圖 完成功能是讀取選單的配置檔案,載入選單,點選選項後,動態生成ui控制項並載入到tabcontrol中 關鍵 這裡可以動態載入其他dll檔案中的元件 assembly assem assembly.loadfile var onepage assem.createinstance data....
動態載入使用者控制項內容
根據使用者控制項的虛擬路徑獲取使用者控制項的html內容 使用者控制項的虛擬路徑 使用者控制項的html內容 public string getusercontrolcontents string usercontrolvirtualpath 過濾html 使用者控制項html內容 過濾後的html...
動態載入使用者控制項的元件!
我們寫使用者控制項的目的就是放到頁面中去。根據不同的條件,我們可以改變載入的使用者控制項!其實原理就是masterpage的原理。這個masterpage會在vs2005中提供,但是現在也可以實現。在我的專案中就用到 masterpage就四個類,其中容器就動態載入使用者控制項。這種功能在vs200...