4

皆さん、

私はかなり複雑なサイトで作業しています。いくつかのコントロールを含む更新パネルがあります。コントロールの1つをクリックすると、jQueryダイアログボックスが開きます。

ダイアログボックスが閉じたら、更新パネルに表示を変更するように通知します。そのためには、更新パネルに投稿する必要があります。

ダイアログボックスには、接続できる便利なコールバックイベントがあることを知っています。しかし、ここにあります。ダイアログを操作するJavaScriptは、すべて別の.jsファイルにあります。これからも分けていきたいです。したがって、ポストバックを実行するコードは、その.jsファイルにあるか、パラメーターとして.jsファイルのメソッドに挿入されています。

どうやってやるの?そして、.jsファイルメソッドに何を渡しますか?

どうもありがとう。

4

1 に答える 1

3

最近これを解決しなければなりませんでした。私はこの問題を助けるための総称機能を持っています。

  • 内外に隠しasp:buttonを入れて、として設定します。UpdatePanelAsyncPostBackTrigger
  • 必要に応じてからjs関数を呼び出し、非表示ItemDataBoundのを渡します。 ClientIDasp:button
  • js関数は、「OK」または設定buttonTxtしたボタンがクリックされると、渡されたボタンのクリックイベントを呼び出します。
  • UpdatePanel.Updateボタンが内にあるUpdatePanelか、Update内にある場合は、自動的に処理できますbutHidden_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 に答える