程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ASP.NET動態加載控件的追趕論

ASP.NET動態加載控件的追趕論

編輯:.NET實例教程

當初我實現這個的時候也是相當郁悶,老是丟失值,於是我就用Visable來解決(是加載WebControl)。以下是其他人的解決方案,蠻有參考價值的。
引用 隨心所欲
http://www.cnblogs.com/dlwang2002/archive/2006/12/07/585093.Html
結論就是:

1:在特定的時刻加入該控件的定義。至少在Page_Load以前,我用的Page_Init。晚了就執行不了了
2:該控件的id必須一致。因為狀態的恢復是根據控件id來完成的。
3:Rebuild的時候一定不要調用子控件的初始化的函數,這樣會浪費時間。

問題:可不可以通過設置UserControl的IsPostBack屬性來達到一種和Page類似的處理方式呢?這樣在UserControl裡面就可以使用if(!IsPostBack)來做一些數據初始化了。
引用 Cat Chen 
我有寫過《深入理解ASP.Net動態控件》的系列文章,你可以去看看有沒有值得參考的內容: 
http://www.cnblogs.com/cathsfz/archive/2006/10/31/545521.Html 
http://www.cnblogs.com/cathsfz/archive/2006/11/05/550985.Html 
http://www.cnblogs.com/cathsfz/archive/2006/11/19/564929.Html
關於追趕加載也詳細解釋了,並非0~n步都會在追趕加載中執行,只有特定的步驟會執行。如果控件已經加載完第k步,添加到另一個加載完第n步的控件中,則僅執行(k+1)~n步,前面的不會重復執行。

至於UserControl的加載很費時,這是你無法繞過去的。如果你的意思是,頁面默認加載UserControlA,發生事件後要丟棄UserControlA改為加載UserControlB,浪費了時間在加載UserControlA上。以現在的ASP.Net頁面生存周期模型,我們無法解決這個問題,你改進後的解決方案也還是要先加載默認的UserControlA。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved