如何在asp.net中有条件地使用ConfirmButtonExtender?

时间:2014-04-09 13:17:19

标签: javascript asp.net ajaxcontroltoolkit

网络应用程序项目。

我使用ConfirmButtonExtender进行确认。 首先,我要验证所有必填字段,而不是向用户显示确认消息。但我每次都能看到它。我想有条件地使用它。

这是我的代码。

<asp:Button ID="UpdatebuttonUpdaterID" runat="server" 
            Text="Update" CssClass="create_role_button_in"
            OnClick="UpdatebuttonUpdaterID_Click" ClientIDMode="Static"/>
<ajaxToolkit:ConfirmButtonExtender ID="ConfirmButtonExtender3" 
            runat="server" TargetControlID="UpdatebuttonUpdaterID"
            ConfirmOnFormSubmit="true" BehaviorID="updateBehavior" 
            ClientIDMode="Static" DisplayModalPopupID="ModalPopupExtender3"/>
<asp:ModalPopupExtender ID="ModalPopupExtender3" runat="server" 
                        TargetControlID="UpdatebuttonUpdaterID"
                        PopupControlID="Panel3" OkControlID="Button5" 
                        CancelControlID="Button6" ClientIDMode="Static" >
</asp:ModalPopupExtender>
<asp:Panel runat="server" ID="Panel3" Style="display: none; width: 200px; background-color: White; border-width: 2px; border-color: Black; border-style: solid; padding: 20px;">
    Do you want to send this Conversion Rate for Approval?<br />
    <asp:Button runat="server" ID="Button5" Text="OK" />
    <asp:Button runat="server" ID="Button6" Text="Cancel" />
</asp:Panel>

javascript代码:

Sys.Application.add_load(wireEvents);

function wireEvents() {
    var behavior = $find("confirmBehavior");
    if (behavior != null) {

        behavior.add_showing(OnClientClickApprove);
    }

    var updateBehavior = $find("updateBehavior");
    if (updateBehavior != null) {
        updateBehavior.add_showing(OnClientClickUpdate);
    }
}

function OnClientClickUpdate() {

    if (some condition)
        return false;
}

因此,如果OnClientClickUpdate返回false,则用户不应看到确认消息。 如果它返回true,那么只有User应该能够在UI上看到确认消息。

2 个答案:

答案 0 :(得分:0)

您可以为其分配一个客户端点击处理程序。有点脏,但确保(在实践中)您的处理程序在链中排在第一位并取消其他处理程序:

<asp:Button ID="UpdatebuttonUpdaterID" runat="server"
            OnClientClick="return OnClientClickUpdate();"

答案 1 :(得分:0)

您需要像这样重写OnClientClickUpdate函数:

function OnClientClickUpdate(sender, eventArgs) {

    if (some condition)
        eventArgs.set_cancel(true);
}