1

场景:我onbeforeunload在 .aspx 页面上有功能,用于在离开当前页面(ASP.NET 应用程序)之前显示一条消息。这个页面非常复杂,回传发生了很多次,例如我有多个按钮、Rad Grid、Rad Window PopUps 等。

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

onbeforeunload谁能告诉我当我从 RadGrid 中删除任何内容时如何防止。以下是我正在使用的代码片段,并且在按钮上工作正常,但我需要网格删除列的帮助可能是一些事件,如按钮的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')"/>
4

1 回答 1

3

尝试做类似下面的事情

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

解释

当点击事件被触发时,它会在 DOM 中的所有元素中冒泡。我们将 Radgrid 包装在一个 div 内,每当在该 div 内发生任何点击时,我们都会删除 onbeforeunload。

于 2012-10-09T13:53:25.090 回答