我在aspx页面中挂钩window.onbeforeunload事件。如果我在同一页面上的UpdatePanel中分页GridView,我需要触发 not 。
我试过挂钩PageRequestManager的initializeRequest事件,但这种情况发生得太晚了,即在onbeforeunload之后。我也尝试在我的onbeforeunload处理程序中检查PageRequestManager.get_isInAsyncPostBack(),但也返回false,gah!
我已阅读此SO帖子:
但除了GridView页面链接导致卸载,而GridView专栏中的按钮没有,这对我来说没有意义?谁知道怎么解决这个问题?我猜测唯一的方法是将客户端点击处理程序附加到所有GridView的页面锚点以设置一些布尔标志,但我不确定如何以可靠的方式实现它。
答案 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