【问题标题】:ASP.NET AJAX suppress onbeforeunload for AJAX requests from updatepanelASP.NET AJAX 抑制来自更新面板的 AJAX 请求的 onbeforeunload
【发布时间】:2009-07-16 12:31:03
【问题描述】:

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

我曾尝试挂钩 PageRequestManager 的 initializeRequest 事件,但它触发得太晚了,即在 onbeforeunload 之后。我也尝试在我的 onbeforeunload 处理程序中检查 PageRequestManager.get_isInAsyncPostBack() 但它也返回 false,哎呀!

我已阅读此 SO 主题:

537702

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

【问题讨论】:

    标签: c# asp.net ajax onbeforeunload


    【解决方案1】:

    好的,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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多