如何停止在ASP.NET中的RadGrid回发上触发onb​​eforeunload函数

时间:2012-10-09 13:36:37

标签: asp.net javascript-events asp.net-ajax radgrid onbeforeunload

场景:我在.aspx页面上有onbeforeunload函数,我用它来导航离开当前页面(ASP.NET应用程序)。这个页面非常复杂,其中回帖发生在很多次,例如我有多个按钮,Rad Grid,Rad Window PopUps等。

因此,只要单击它们,所有按钮都会调用onbeforeunload,并且不必要地调用消息框。为了防止显示onbeforeunload消息,我只是在按钮的OnClientClick事件上调用另一个cancelEvent函数,我只是调用null。通过这样做,所有按钮回发都被处理,但我使用的RadGrid有按钮列(删除),每当从网格中删除一行时,它就会刷新网格,最终调用onbeforeunload。

当我从RadGrid中删除任何内容时,可以请任何人告诉我如何防止onbeforeunload。以下是我正在使用的代码片段并且对按钮工作正常但我需要帮助网格删除列可能是一些事件,比如Button的OnClientClick事件,我可以用来调用我的cancelEvent。

window.onbeforeunload = confirmExit;
function confirmExit() {
            window.event.returnValue = 'If you navigate away from this page any unsaved changes will be lost!';
}

function cancelEvent(event) {
            window[event] = function () {null}
}

<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" CssClass="ActionButtons"
            ValidationGroup="vsDataEntry" OnClientClick="return cancelEvent('onbeforeunload')"/>

此致

1 个答案:

答案 0 :(得分:3)

尝试做类似下面的事情

<div onclick="return cancelEvent('onbeforeunload')">
    <telerik:RadGrid runat="server">
    </telerik:RadGrid>
</div>

<强>解释

当触发click事件时,它会通过DOM中的所有元素冒泡。我们将Radgrid包装在div中,只要在该div内发生任何点击,我们就会删除onbeforeunload。