使用過ASP.NET AJAX的UpdatePanel的人應該都知道,只有註冊為UpdatePanel的元件事件,才會觸發partial refresh事件,否則一般的server control還是會執行full page refresh,但今天如果我們想要在某些條件下才把某個元件註冊為trigger時該怎麼辦?
使用過ASP.NET AJAX的UpdatePanel的人應該都知道,只有註冊為UpdatePanel的元件事件,才會觸發partial refresh事件,否則一般的server control還是會執行full page refresh,但今天如果我們想要在某些條件下才把某個元件註冊為trigger時該怎麼辦?這邊提供一個簡單的寫法:
1
AsyncPostBackTrigger tLoading = new AsyncPostBackTrigger();
2
tLoading.ControlID = "BtnToLoading";
3
tLoading.EventName = "Click";
4
UpdatePanel1.Triggers.Add(tLoading);
5
UpdatePanel1.Update();
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
2
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
3
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
4
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
5
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
透過以上的程式碼就可以動態在頁面上動態註冊好trigger囉,不過要特別注意的是,透過這種寫法有時候會出現trigger不見的問題,可時候可以將這段程式寫到OnInit中或者透過以下寫法強制幫UpdatePanel註冊trigger囉:
相關的做法可以參考這個連結:http://www.zhangsichu.com/blogview.asp?Content_Id=68
1
UpdatePanel1.GetType().GetMethod("Initialize", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(UpdatePanel1, null);
![](http://www.dotblogs.com.tw/Providers/BlogEntryEditor/FCKeditor/editor/dialog/InsertCode/codeimages/InBlock.gif)
![]() |
游舒帆 (gipi) 探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。 |