Диалог подтверждения JQuery не запускает серверное событие ASP Button OnClick после подтверждения пользователя - PullRequest
0 голосов
/ 15 апреля 2011

Я хочу показать диалоговое окно подтверждения модальности при событии щелчка кнопки ASP (btnRejectAll), и как только пользователь выбирает «ОК» в модальном диалоговом окне, необходимо вызвать событие на стороне сервера OnClick кнопки «btnRejectAll». Следующий код показывает диалог модального подтверждения при щелчке, но как только мы нажимаем кнопку ОК, это не запускает событие на стороне сервера. Кто-нибудь может мне помочь с этим?

Вот мой код.

<script language="javascript" type="text/javascript">

    $(function() {


        $("#dialogReject").dialog({
            autoOpen: false,
            height: 300,
            width: 350,
            modal: true,
            buttons: {
                "Reject": function() {
                    $(this).dialog("close");
                    return true;
                },
                Cancel: function() {
                    $(this).dialog("close");
                    return false;
                }
            }
        });

        $("#btnRejectAll").click(function(event) 
        {
            event.preventDefault();

            $("#dialogReject").dialog("open"); 
        });


    });

<asp:Button ID="btnRejectAll" runat="server" Text="Reject All" OnClick="btnRejectAll_OnClick" />

Ответы [ 2 ]

0 голосов
/ 18 апреля 2011

Я нашел способ вызвать серверное событие кнопки при подтверждении диалога. Вот код.

function ConfirmReject(detailId) {

        var leaveId = $("#hdnLeaveReqId").val();



        $("#dialogReject").dialog({
            autoOpen: true,
            height: 300,
            width: 350,
            modal: true,
            buttons: {
                "Reject": function() {
                    $.ajax({
                        type: "POST",
                        url: "LeaveRequestForm.aspx/RejectLeave",
                        data: "{'LeaveReqId':'" + leaveId + "', 'detailId':'" + detailId
                                + "', 'rejectReason':'" + $("#txtRejectReason").val() + "'}",
                        dataType: 'json',
                        contentType: "application/json; charset=utf-8",
                        success: function(msg) { location.reload(); }
                    });

                    $(this).dialog('close');
                },
                Cancel: function() {
                    $(this).dialog("close");
                }
            }
        });

        return false;
    }

 <asp:Button ID="btnRejectAll" runat="server" Text="Reject All" 
                        OnClientClick="return ConfirmReject(0);" />

В классе CodeBehind:

<WebMethod()> _
Public Shared Function RejectLeave(ByVal LeaveReqId As Integer, ByVal detailId As Integer, ByVal rejectReason As String) As String

    'Do Something here

    Return "success"

End Function
0 голосов
/ 15 апреля 2011

Вы запрещаете действие по умолчанию при нажатии btnRejectAll, но никогда не вызываете никаких действий для действия «Отклонить».Я не знаком с ASP.NET, но, судя по вашей разметке, похоже, что вы отменяете вызов на btnRejectAll_OnClick.Если это функция JavaScript, то вы можете сделать это:

"Reject": function() {
             $(this).dialog("close");
             btnRejectAll_OnClick();
             return true;
          },

Если это не так (и я подозреваю, что это не так), то это, вероятно, вызывает отправку формы.Таким образом, вы могли бы вместо этого сделать это:

"Reject": function() {
             $(this).dialog("close");
             $('#form').submit();
             return true;
          },
...