2011-11-07 13 views
0

這就是我想要做的事 -sender._postBackSettings.sourceElement未定義

使用jQuery當文檔準備就緒,如果頁面不回傳我發出了一個手動回發了一個UpdatePanel來檢索數據一個數據庫。

雖然updatepanel獲取數據,但我提供了一個updateprogress,當特定的updatepanel完成時我會隱藏它。我也想從任何交互中「屏蔽」屏幕。數據加載完成後,表單上還有其他按鈕,我想在發生任何部分回發的情況下阻止所有內容。

下面是代碼:

$(document).ready(function() 
     { 
      if(<% =(Not Page.isPostBack).ToString().ToLower() %>) 
      { 
      __doPostBack('upShipping'); 
      } 
     } 
     function pageLoad() { 
      var prm = Sys.WebForms.PageRequestManager.getInstance(); 
      prm.add_beginRequest(BeginRequestHandler); 
      prm.add_endRequest(EndRequestHandler); 
     } 
function BeginRequestHandler(sender, args) 
      { 
       $('.blur').css("display", "block"); 
       if (args._postBackElement.id == 'upShipping') { 
        $get('divCalculating').className = 'Show'; 
       } 
      } 


     function EndRequestHandler(sender, args) 
      { 
       $('.blur').css("display", "none"); 
       if (sender._postBackSettings.sourceElement.id == 'upShipping') 
       { 
        $get('divCalculating').className = 'Hidden'; 
       } 
       } 

如果我沒有在屏幕上「點擊」一切都很正常。但是,如果我只是點擊屏幕上的任何地方,而updatepanel更新「EndRequestHandler」不會觸發,我堅持加載gif和屏蔽屏幕。 我在瀏覽器的錯誤控制檯中收到以下錯誤:sender._postBackSettings.sourceElement is undefined

任何想法?

謝謝!

尼克

回答

0

出於某種原因sender._postBackSettings.sourceElement一直回來爲NULL在EndRequestHandler

我定義了一個全局變量,在BeginRequestHandler處爲它賦值並在EndRequestHandler中檢查了它的值。
這解決了這個問題。