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 回答