ASP.NET AJAX抑制来自updatepanel的AJAX请求的onbeforeunload

时间:2009-07-16 12:31:04

标签: c# asp.net ajax onbeforeunload

我在aspx页面中挂钩window.onbeforeunload事件。如果我在同一页面上的UpdatePanel中分页GridView,我需要触发 not

我试过挂钩PageRequestManager的initializeRequest事件,但这种情况发生得太晚了,即在onbeforeunload之后。我也尝试在我的onbeforeunload处理程序中检查PageRequestManager.get_isInAsyncPostBack(),但也返回false,gah!

我已阅读此SO帖子:

537702

但除了GridView页面链接导致卸载,而GridView专栏中的按钮没有,这对我来说没有意义?谁知道怎么解决这个问题?我猜测唯一的方法是将客户端点击处理程序附加到所有GridView的页面锚点以设置一些布尔标志,但我不确定如何以可靠的方式实现它。

1 个答案:

答案 0 :(得分: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