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

发布于 2024-07-26 17:36:35 字数 599 浏览 10 评论 0原文

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

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

我读过这个帖子:

537702

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

I am hooking the window.onbeforeunload event in an aspx page. I need that not to fire if I page a GridView that's in an UpdatePanel on the same page.

I have tried hooking the PageRequestManager's initializeRequest event but this fires too late, i.e. after onbeforeunload. I have also tried checking PageRequestManager.get_isInAsyncPostBack() in my onbeforeunload handler but that returns false too, gah!

I have read this SO thread :

537702

But that doesn't make sense to me other than GridView page links cause an unload whereas buttons in a GridView column do not? Anybody know how to solve this? I'm guessing only way is to attach client-side click handler to all the GridView's page anchors to set some boolean flag, but I'm not sure how to accomplish that in a reliable manner.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

玻璃人 2024-08-02 17:36:35

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

Ok JQuery to the rescue!

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

:
:

Set a Css class for all pager links, use that to append javascript click handlers that set a flag when clicked, use flag to avoid onbeforeunload

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文