0

aspx:

<script type="text/javascript">
    window.onbeforeunload = function (e) {
        if (unsavedData()) {
            return "Exit page?";
        }
    }

    function unsavedData() {
        //logic for unsaved data here
        //let's just return true for this example
        return true;
    }
</script>

<asp:UpdatePanel ID="updatePnlContent" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
    <ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnSave" EventName="Click" />
            <%-- triggers for other buttons  --%>
        </Triggers>
        <ContentTemplate>
            <asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click"/>
            <asp:Button ID="btnCancel" runat="server" Text="Cancel" OnClick="btnCancel_Click"/>
            <%-- Other fields and buttons  --%>
        </ContentTemplate>
    </ContentTemplate>
</asp:UpdatePanel>

コードビハインド

protected void btnSave_Click(object sender, EventArgs e)
{
    //save data
}

protected void btnCancel_Click(object sender, EventArgs e)
{
    Response.Redirect("Default.aspx");
}

[キャンセル] ボタンをクリックしたときに保存されていないデータがある場合、予想どおり、[OK] をクリックして続行するか、[キャンセル] をクリックしてこのページにとどまるように求めるプロンプトが表示されます。ただし、キャンセルを押してこのページにとどまると、Microsoft AJAX JavaScript の 1 つで特定できないエラーが発生します。

私が考えているのは、window.onbeforeunload 関数の前に OnCilck イベントが発生したことです。ユーザーが [OK] をクリックして続行し、[キャンセル] をクリックしてこのページに留まらない場合にのみ OnClick イベントが発生するようにするにはどうすればよいですか?

4

1 に答える 1

0

[キャンセル] ボタンから OnClick メソッドを削除し、OnClieckClick に置き換えて unsavedData() 関数を呼び出します。

OnClientClick だけでなく OnClick も使用したい場合は、この投稿を参照して解決策を確認してください: OnclientClick と OnClick は同時に機能していませんか?

于 2013-02-07T21:40:57.667 に答える