Как продолжить использование метода нажатия кнопки на стороне сервера asp.net после взаимодействия с JQuery UI Dialog? - PullRequest
1 голос
/ 22 ноября 2011

От jQuery noob, любая помощь приветствуется, так как я уже потратил слишком много времени с быстрым приближением крайнего срока.

Низкое значение - у меня есть форма asp.net в инженерном приложении для интрасети, которая должна открывать диалоговое окно jQuery при нажатии кнопки Отправить при определенных обстоятельствах.

В «определенных обстоятельствах» пользователю необходимо подтвердить вопрос, а форму необходимо продолжить с отправкой , включая , с выполнением серверного кода для события Click кнопки Submit.

Если «определенных обстоятельств» не существует, форма должна просто отправить и выполнить код на стороне сервера для события Click кнопки Submit. (То же, что и выше, но без диалога jQuery.)

Задача, похоже, следующая:

  • Когда диалоговое окно закрывается, форма отправляется, но это, очевидно, * не *, как если бы исходная кнопка Submit вызвала ее, поскольку единственный исполняемый код на стороне сервера - это Page_Load`. `CmdSave_Click '(что мне также нужно выполнить) не вызывается.

Вот определение диалогового окна. (При обоих щелчках по кнопкам мне нужно вставить значение в скрытое поле, в котором, в конечном счете, нуждается метод cmdSave_Click на стороне сервера.)

var dlgTidPopup = $('#popupPnlTid').dialog({
    resizable: false,
    autoOpen: false,
    draggable: false,
    modal: true,
    closeOnEscape: false,
    title: 'Request for Target Identifier (TID)?',
    buttons: {
        "yes": function () {
            $('#txtTidYes').val("1");
            $('#userInputForm').unbind("submit").submit();
            $(this).dialog('close');
        },
        "no": function () {
            $('#txtTidYes').val("0");
            $('#userInputForm').unbind("submit").submit();
            $(this).dialog('close');
        }
    }
});

dlgTidPopup.parent().appendTo($('form:first'));

Вот часть представления. Оператор if определяет внешний вид диалогового окна, чтобы удовлетворить «это определенное обстоятельство?» Требование.

$('#userInputForm').submit(function (event) {
    if ($('#hdnSituationIsTid').val() == "1") {
        event.preventDefault();
        $('#popupPnlTid').dialog("open");
    }
});

Кнопка отправки выглядит так:

<asp:ImageButton ID="ibtnSend" ImageUrl="../_common/Images/buttons/Send.gif"
  runat="server" OnCommand="cmdSave_Click" CommandName="Send" CssClass="majorButton"
  CausesValidation="false" />

Ответ на этот вопрос, вероятно, очень прост, и мне просто не хватает знаний. Любое руководство с благодарностью. (Кроме того, знайте, что я искал SO и прочитал много, много постов и даже смоделировал мой код после многих из них, но я не совсем нашел решение своего конкретного вопроса.)

1 Ответ

1 голос
/ 22 ноября 2011

См. Мой ответ на вопрос, связанный ниже, я использую скрытую asp:button для callback:

ASP.NET с всплывающим диалоговым окном jQuery: как отправить сообщение при закрытии диалога

 function showjQueryUIDialogOkBtnCallback(buttonToClick, dialogSelector, buttonTxt, isModal, width, height) 
   {
       var buttonOpts = {};
       buttonOpts[buttonTxt] = function () {
           $("#" + buttonToClick).trigger('click');
       };

       buttonOpts['Cancel'] = function () {
           $(this).dialog("close");
           $(this).dialog('destroy'); 
       }

       $(dialogSelector).dialog({
           resizable: false,
           height: height,
           width: width,
           modal: isModal,
           open: function (type, data) {
               $(this).parent().appendTo("form"); //won't postback unless within the form tag
           },
           buttons: buttonOpts

       });

       $(dialogSelector).dialog('open');

    }
...