1

jquery ダイアログ ポップアップでユーザー コントロールを開こうとしていますが、そうすると、サーバー側のイベントが発生せず、UpdatePanels も無効になると思います。

誰もがこれに遭遇したことがありますが、これを回避してユーザーコントロールが期待どおりに機能することを確認する方法はありますか?

これは私が持っているコードです。ユーザー コントロール自体はイメージ アップローダであり、3 つの更新パネルと、サーバー側のクリック イベントを持つ多数のボタン/イメージ ボタンがあります。

<a href="#" id="imgDialog">Open Gallery</a>  
<div id="ImagePopup" style="display:none">
    <uc1:ImageGallery ID="ImageGallery1" ImageSectionID="1" runat="server" />    
</div>  
<script type="text/javascript">
    $(document).ready(function () {

        $("#imgDialog").click(, function (e) {
            $('#ImagePopup').dialog({
                bgiframe: true,
                modal: true,
                show: ("slide", { direction: "down" }, 200),
                hide: ("slide", { direction: "up" }, 200),
                showOpt: { direction: 'up' },
                width: 700,
                close: function (event, ui) {
                }
            });
            e.preventDefault();
        });
    });
</script>

コントロールを aspx ページに移動し、必要に応じて iframe を使用できることをうれしく思いますが、実行する前に最初に確認したかったのです。

どうもありがとう

4

2 に答える 2

1

イベントを発生させるには、フォームにダイアログを追加する必要があります。次のコードのように、appendTo 行を追加して実行します。

$("#imgDialog").click(, function (e) {
            $('#ImagePopup').dialog({
                bgiframe: true,
                ...........
                close: function (event, ui) {
                }
            });
            e.preventDefault();
            $('#ImagePopup').parent().appendTo(jQuery("form:first"));
        });

ファイル アップロードのコントロールを含むサーバー コントロールで Juery UI ダイアログを使用しました。それが可能であることを保証します。

よくわかりませんが、ダイアログが 1 回しか開かない可能性があります。その場合は、次のように close 関数を定義してみてください。

close: function (event, ui) {
                    $(this).remove();
                    }
于 2012-10-09T20:24:49.997 に答える
0

問題は、サーバー コントロールを jQuery ポップアップに配置すると、コントロールがフォームから削除さform runat="server"れ、フォームの外に配置されることです。

コントロールがform runat="server"サーバー側のイベント内にないため、イベントは発生しません。

この種の問題の回避策の 1 つは、ユーザー コントロールがロードされた後にラッパーを明示的に複製し、form runat="server". これで問題が解決するはずです..

これは、ポップアップがフォームの外にあることを Firebug または任意の開発者ツールで確認できます。

于 2012-10-09T20:01:35.123 に答える