0

aspx.page からうまく機能する jQuery UI ダイアログがあります。

私の問題は、ページの一部をユーザーコントロールに移動する必要があることです。div と jquery をユーザー コントロールに移動しました。コントロールは正常にポップアップしますが、サーバー側のコントロールが起動します。

ダイアログをポップアップするコードは次のとおりです。

        var $partyaddress = $('#addressinformationcontent').dialog({
            autoOpen: false,
            modal: true,
            height: 450,
            width: 850,
            title: 'Party Address Information'
        });

        $('#addressopener').click(function () {
            $('#addressinformationcontent').parent().appendTo($("form:first"));
            $partyaddress.dialog('open');
            return false;
        });

ダイアログにポップアップする私のdivは次のとおりです。

<div id="addressinformationcontent">

<asp:UpdatePanel ID = "updatePanelAddress" runat="server">

<ContentTemplate>

//some asp controls here and a asp.net submit button

/ContentTemplate>

</asp:UpdatePanel>

</div>

私は問題を理解していると思います。jquery は、DOM を使用してフォーム タグの外側にダイアログを移動します。それらを元に戻す必要があります。クリック機能にある行はそれを「フォーム」に追加しますが、ユーザーコントロールにはフォームタグがありません。奇妙なことに、最初にダイアログをポップアップしたとき、ダイアログのボタンを押してフォームフィールドをロードする必要があり、正常に機能してフィールドをロードします。ダイアログでの最初のポストバックの後、すべてのサーバー側コントロールが機能しなくなりました。これを修正する方法がわかりません。どんな助けでも大歓迎です

4

2 に答える 2

2

また、ダイアログ ボックス内でポストバック イベントを適切に発生させるには、次のコード行をクリック イベントの外側に設定する必要があります。

$('#addressinformationcontent').parent().appendTo($("form:first"))

サンプルコードになります。

$(function () {
      $('#addressinformationcontent').parent().appendTo($("form:first"))
      $("#addressinformationcontent").dialog(
      {
         autoOpen: false,
         ...
       });
});

サーバー側のポストバック後に jquery ダイアログを開いたままにしておく場合は、少し調整する必要があります。一例はこちらです。

i: コード ビハインド ファイルに変数を作成します。

protected string PostBackOption ="";

ii: ページ ロードまたはページ プリ レンダリング イベントに ispostback 条件を追加します。

if (Page.IsPostBack)
{
   PostBackOption = "$(\"#addressinformationcontent\").dialog(\"open\");";
}

iii: js スクリプト内で、変数を次のように追加します。

var $partyaddress = $('#addressinformationcontent').dialog({
        autoOpen: false,
        modal: true,
        height: 450,
        width: 850,
        title: 'Party Address Information'
    });

<%=PostBackOption %>

iv: この方法では、ポストバックの場合にダイアログ ボックスが消えません。

于 2012-04-20T02:56:09.537 に答える