用戶js和ASP.NET UpdatePanel 控件之間的互動:

用戶js和ASP.NET UpdatePanel 控件之間的互動:

  • UpdatePanel更新完成之后調用js
  • 使用js激活UpdatePanel更新
  • ?

首先是今天代碼使用到的內容:UpdatePanel更新完成之后調用js。

關鍵代碼: Sys.WebForms.PageRequestManager.getInstance().add_endRequest(AddTextBoxFouce);

事出原因:

原先用JQuery設計了一段代碼,$().ready(頁面加載完成,即$(document).ready)之后,運行AddTextBoxFouce()給一部分TextBox控件(對應的HTML是<input type="text"/>)綁定了blur事件。具體的功能就是,有一些文本框,輸入其中一個值,對應的會有某個框也跟著變動,有的是其中一個輸入“-1”,另一個變成“+1”;有的是輸入“2”,另一個也變成“2”。

$().ready(function () {
                AddTextBoxFouce();
});

但今天在測試的時候發現,UpdatePanel更新之后,包含在UpdatePanel當中的文本框上的綁定的blur事件沒了!頁面加載完成之后所有的$().ready()都被運行了一個,然后相應的文本框也都綁定了blur事件。這部分的設計是沒錯的。出現問題的可能是,UpdatePanel更新之后,包括在UpdatePanel控件當中的內容dom,被重新替換過了。這些dom當中的文本框都是沒有綁定blur事件的。

仔細檢查、確定是這個原因之后,就想到了解決的辦法:一個方案A,那就是在觸發UpdatePanel更新的按鈕上添加"onclick";另一個方案B,UpdatePanel更新觸發事件上,添加代碼,重新調用 AddTextBoxFouce()。


方案A,按鈕上添加"onclick",這個涉及到事件觸發的先后順序,也涉及到ASP.NET AJAX腳本和JQuery之間的沖突(JQuery可以清除dom上的所有事件)。因為時間的關系,寫這篇文章的同時做了一個簡單的測試,結果是先激發客戶端普通的"onclick",然后才提交更新(有可能是提交到服務器端再返回贊成的延遲,但是同樣是沒有意義的)。


方案B,就需要研究UpdatePanel事件激發(實際上是ScriptManager的事件激發)。這個原先研究過,時間久了印象已經模糊,還好今天“手氣不錯”,很快就搜到了幾個很給力的博客。找到了相關的代碼,添加到頁面上測試了兩遍,問題于是解決了。
需要注意的是,Sys.WebForms.PageRequestManager.getInstance().add_endRequest(AddTextBoxFouce)這條語句,需要放在<asp:ScriptManager>后面。

然后,是使用js激活UpdatePanel更新


解決方案一:使用隱藏的Button來觸發。
解決方案二:__doPostBack('panelName','');
另外,嘗試著尋找Sys.WebForms.PageRequestManager類似的類庫來實現,結果暫時沒有找到。


參考資料:
《Sys.WebForms.PageRequestManager 類》(微軟MSDN)
http://msdn.microsoft.com/zh-cn/library/bb311028.aspx

《UpdatePanel觸發javascript腳本技巧》
http://www.pxljau.live/Clingingboy/archive/2007/10/10/920038.html

《(轉)AJAX 中Sys.WebForms.PageRequestManager的事件激發順序 》
http://blog.csdn.net/xd43100678/archive/2010/10/20/5953579.aspx


《使用js刷新UpdatePanel 》
http://www.pxljau.live/MythYsJh/archive/2010/04/09/1708124.html

《ScriptManager和UpdatePanel控件的使用(轉)》
http://hi.baidu.com/sidihu/blog/item/6745ee8ee164e1eb513d9286.html

《ASP.NET AJAX入門系列(7):使用客戶端腳本對UpdateProgress編程 》
http://www.pxljau.live/Terrylee/archive/2006/11/12/aspnet_ajax_updateprogress_part2.html


《javascript里通過腳本觸發UpdatePanel的刷新 》
http://www.pxljau.live/caiyuanzi/archive/2010/12/24/1916102.html


《UpdatePanel外部控件更新》

http://vergis.blog.163.com/blog/static/611671662009970255774/?fromdm&fromSearch&isFromSearchEngine=yes

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/xpnew/archive/2011/02/22/6199585.aspx

posted @ 2011-02-22 11:43  柳城之城  閱讀(...)  評論(...編輯  收藏
三d开奖结果走势图