1

aspxページでwindow.onbeforeunloadイベントをフックしています。同じページのUpdatePanelにあるGridViewをページングする場合は、起動しないようにする必要があります。

PageRequestManagerのinitializeRequestイベントをフックしようとしましたが、これは遅すぎます。つまり、onbeforeunloadの後です。また、onbeforeunloadハンドラーでPageRequestManager.get_isInAsyncPostBack()をチェックしようとしましたが、これもfalseを返します。

私はこのSOスレッドを読みました:

537702

しかし、GridViewページリンクがアンロードを引き起こすのに対し、GridView列のボタンはそうではないことを除いて、それは私には意味がありませんか?誰かがこれを解決する方法を知っていますか?クライアント側のクリックハンドラーをGridViewのすべてのページアンカーにアタッチしてブールフラグを設定するのが唯一の方法だと思いますが、信頼できる方法でそれを実現する方法がわかりません。

4

1 に答える 1

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を回避します

于 2009-07-16T13:32:45.997 に答える