带有jQuery弹出对话框的ASP.NET:如何在对话框关闭时发回

带有jQuery弹出对话框的ASP.NET:如何在对话框关闭时发回,jquery,asp.net,updatepanel,jquery-ui-dialog,asynchronous-postback,Jquery,Asp.net,Updatepanel,Jquery Ui Dialog,Asynchronous Postback,各位 我在一个相当复杂的网站上工作。我们有一个更新面板,其中包含一些控件。单击其中一个控件时,将打开一个jQuery对话框 当对话框关闭时,我想通知更新面板更改其显示。为此,我需要发回更新面板 我知道这个对话框有一个方便的回调事件,你可以连接到它。但事情是这样的。操纵对话框的javascript都在一个单独的.js文件中。我想继续把它分开。因此,执行回发的代码要么在该.js文件中,要么作为参数注入到该.js文件中的某个方法中 我该怎么做?我将向.js文件方法传递什么 非常感谢 最近不得不解决这个

各位

我在一个相当复杂的网站上工作。我们有一个更新面板,其中包含一些控件。单击其中一个控件时,将打开一个jQuery对话框

当对话框关闭时,我想通知更新面板更改其显示。为此,我需要发回更新面板

我知道这个对话框有一个方便的回调事件,你可以连接到它。但事情是这样的。操纵对话框的javascript都在一个单独的.js文件中。我想继续把它分开。因此,执行回发的代码要么在该.js文件中,要么作为参数注入到该.js文件中的某个方法中

我该怎么做?我将向.js文件方法传递什么


非常感谢

最近不得不解决这个问题。我有一个通用函数来帮助解决这个问题

  • 将隐藏的
    asp:button
    放入
    UpdatePanel
    或外部,并将其设置为
    AsyncPostBackTrigger
  • 如果需要,从
    ItemDataBound
    调用js函数,传入隐藏的
    asp:按钮的
    ClientID
  • 一旦单击了“OK”按钮或您将
    buttonText
    设置为的任何按钮,js函数将在传入的按钮上调用click事件
  • 然后,如果按钮位于
    UpdatePanel
    内,您可以自动处理
    UpdatePanel.Update
    ,或者在
    但隐藏中调用
    Update
标记:

<asp:UpdatePanel runat="server" ID="UpdatePanel1">
  <ContentTemplate>
     <asp:button id="btnHidden" style="display:none" runat="server" onclick="btnHidden_Click"/>
   </ContentTemplate>
 </asp:UpdatePanel> 
   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');

    }

您可以扩展js文件中的函数,从需要挂接的对话框中接收每个方法的回调函数;然后将这些函数连接起来,但首先检查它们:if(typeof(cbFncClose)==='function')cbFncClose();非常巧妙!非常感谢。一开始我并不喜欢只通过脚本点击的隐藏按钮,但我可以看到,考虑到发回和更新面板的复杂性,这可能是最可靠的解决方案。再次感谢!真是太棒了!最后我花了2天的时间才把它用上(通过摆弄和谷歌冲浪)。感谢您发布的有效回复代码。