如何在与jQuery UI对话交互后继续使用asp.net服务器端按钮单击方法?

时间:2011-11-22 03:00:12

标签: c# jquery asp.net jquery-ui jquery-ui-dialog

来自jQuery noob,任何帮助都会受到赞赏,因为我已经浪费了太多时间,截止日期快到了。

低调 - 我在Intranet工程应用程序中有一个asp.net表单,在某些情况下按下Submit按钮时需要弹出一个jQuery对话框。

在“特定情况”下,用户需要确认问题,表单需要继续提交包括执行提交按钮的Click事件的服务器端代码。

当“某些情况”不存在时,表单需要简单地提交并执行Submit按钮的Click事件的服务器端代码。 (与上面相同,但没有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" />

答案可能很简单,我只是缺乏知识。非常感谢任何指导。 (另外,要知道我已经搜索了很多很多帖子,并且甚至在其中许多帖子之后对我的代码进行了建模,但我还没有找到解决我具体问题的方法。)

1 个答案:

答案 0 :(得分:1)

请参阅下面关联问题的答案,我对asp:button使用隐藏的callback

ASP.NET with jQuery popup dialog: how to post back on dialog closing

 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');

    }