2009-07-16 12 views
1

aspxページでwindow.onbeforeunloadイベントをフックしています。同じページ上のUpdatePanelにあるGridViewをページングするとでなく、が発生する必要があります。ASP.NET AJAXは、updatepanelからのAJAX要求のonbeforeunloadを抑制する

私はPageRequestManagerのinitializeRequestイベントをフックしようとしましたが、これはあまりにも遅く、つまりonbeforeunloadの後に発生します。私はまた、私のonbeforeunloadハンドラでPageRequestManager.get_isInAsyncPostBack()をチェックしようとしましたが、それもfalseを返す、ガー! GridViewの列のボタンがないのに対し、GridViewのページへのリンク以外は、アンロードを引き起こす

537702

しかし、それは私には意味がありません。

私はこのSOスレッドを読んだことがありますか?誰もこれを解決する方法を知っていますか?私は、クライアント側のクリックハンドラをすべてのGridViewのページアンカーにアタッチしてブール値フラグを設定する方法しかないと推測していますが、信頼できる方法でこれを達成する方法がわかりません。

答えて

2

Ok救済のためのJQuery!

をonbeforeunload避けるためにフラグを使用し、クリックされたときにフラグを設定するJavaScriptクリックハンドラを追加することを使用し、すべてのページャリンクのCSSクラスを設定し

<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" ... /> 

: 
: 

関連する問題