2009-07-16 44 views
1

我掛鉤了一個aspx頁面中的window.onbeforeunload事件。我需要而不是來觸發,如果我在同一頁面上的UpdatePanel中查看GridView。ASP.NET AJAX抑制來自updatepanel的AJAX請求onbeforeunload

我試着掛鉤PageRequestManager的initializeRequest事件,但是這太晚了,也就是在onbeforeunload之後。我也嘗試檢查我的onbeforeunload處理程序中的PageRequestManager.get_isInAsyncPostBack(),但它也返回false,gah!

我已閱讀本SO主題:

537702

但是,這沒有任何意義對我來說比GridView控件的網頁鏈接等引起的卸載,而在GridView欄按鈕不?任何人都知道如何解決這個問題?我猜想唯一的辦法是將客戶端的點擊處理程序附加到所有的GridView的頁面錨點來設置一些布爾標誌,但我不知道如何以可靠的方式完成。

回答

2

好的JQuery來拯救!

<script type="text/javascript"> 
    var flag = true; 
    window.onbeforeunload = beforeUnloading; 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_pageLoaded(initPagers); 

    function initPagers() { 
     $(".gridViewPagerStyle").click(function() { flag = false; }); 
    } 

    function beforeUnloading(){ 
     if(flag) 
      return "unloading"; 

     flag = true; 
    } 
</script> 

: 
: 

<asp:GridView ... PagerStyle-CssClass="gridViewPagerStyle" ... /> 

: 
: 

設置CSS類所有尋呼機鏈接,用它來追加該設置標誌的JavaScript單擊處理點擊時,使用標誌,以免onbeforeunload