4

伙计们,

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

当对话框关闭时,我想向更新面板发出信号以更改其显示。为此,我需要发回更新面板。

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

我怎样才能做到这一点?我会将什么传递给 .js 文件方法?

非常感谢。

4

1 回答 1

3

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

  • asp:button在内部或外部放置一个隐藏UpdatePanel并将其设置为一个AsyncPostBackTrigger
  • ItemDataBound如果需要,调用 js 函数,传入ClientIDhidden 的asp:button
  • 一旦单击“确定”或您设置的任何按钮,js 函数将调用传入按钮的单击事件buttonTxt
  • UpdatePanel.Update然后,如果按钮在 内或在 内UpdatePanel调用,您可以自动处理。UpdatebutHidden_Click

标记:

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

    }
于 2011-11-09T03:00:50.197 回答