【问题标题】:ASP.NET with jQuery popup dialog: how to post back on dialog closing带有 jQ​​uery 弹出对话框的 ASP.NET:如何在对话框关闭时回发
【发布时间】:2011-12-24 23:29:58
【问题描述】:

伙计们,

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

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

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

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

非常感谢。

【问题讨论】:

  • 可以扩展js文件中的函数,从需要钩入的对话框中接收每个方法的回调函数;然后只需连接这些函数,但首先检查它们: if (typeof(cbFncClose) === 'function') cbFncClose();

标签: jquery asp.net updatepanel jquery-ui-dialog asynchronous-postback


【解决方案1】:

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

  • 将隐藏的asp:button放在UpdatePanel内部或外部,并将其设置为AsyncPostBackTrigger
  • 如果需要从ItemDataBound调用js函数,传入隐藏asp:buttonClientID
  • 一旦“确定”或任何您设置的buttonTxt 按钮被单击,js 函数将在传入的按钮上调用单击事件。
  • 如果按钮在UpdatePanel 内,您可以自动处理UpdatePanel.Update,或在butHidden_Click 内调用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');

    }

【讨论】:

  • 非常巧妙!谢谢!起初我并不热衷于只有通过脚本才能点击的隐藏按钮,但我可以看到,鉴于回发和更新面板的复杂性,这可能是最可靠的解决方案。再次感谢!
  • 确实很好用!最后!我花了 2 天的时间才让它工作(通过摆弄和谷歌冲浪)。感谢发布有效的已回答代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-29
  • 2014-01-26
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
相关资源
最近更新 更多