0

現在、ビューを使用してダイアログをロードする作業を行っています。このビューは、購入する製品の挿入と編集の両方を処理します。

私が遭遇している問題は、製品を保存するときに、ダイアログを閉じて、元のページにあったグリッドを更新する必要があることです。そうしようとすると、親でダイアログを見つけて閉じるイベントをトリガーしようとしています。これまでのところ、親でダイアログを見つけるのに効果がありませんでした。グリッドを見つけて強制的に更新することができました。

私の質問は、ダイアログ内から終了をトリガーする方法はありますか? ところで、これが問題の一部であるかどうかはわかりませんが、ダイアログに部分ビューではなく完全ビューを使用しています。

どんな助けでも大歓迎です。ありがとう。

敬具、 チャド

編集:これが私のコードです。

ビュー(親ページ)

...
<div id="divPOProduct">
</div>

<script type="text/javascript">
    var selectedIds = [];

    $(document).ready(function () {
            $("#divPOProduct").dialog({
                height: 500,
                width: 700,
                modal: true,
                autoOpen: false,
                draggable: false,
                resizable: false,
                open: function () { },
                close: function (event, target) {
                        alert("Here");
                        return false;
                }
            });

   //"Add" button
            $("#add-poproduct").click(function (e) {
                e.preventDefault();

                var link = '@(Url.Action("POProductAddPopup", "PurchaseOrder", new { purchaseOrderId = Model.Id }))';
                //OpenWindow(link, 600, 500, true);

                $("#divPOProduct").load(link);
                $("#divPOProduct").dialog("open");


                return false;
            });

...

表示 (ダイアログ)

$("#save").click(function (e) {
        var validationTest = CheckValidation();

        if (validationTest) {
            var model = {
                ...
            };
            $.getJSON('@Url.Action("SavePurchaseOrderProduct", "PurchaseOrder")', model, function (result) {
                if (result) {
                    //$(this).closest('.ui-dialog-content').dialog('close')
                    window.parent.$("divPOProduct").dialog("close");
                    //$(window.parent).find("divPOProduct").dialog("close");
                }
            });
            return false;
        }
    });
});

結果の if ステートメントに表示される 3 つの試行は、これまでに試行したものです。親とdivを見つけることができますが、ダイアログは見つかりません。ところで、結果から返されるものはすべて真/偽です。

4

2 に答える 2

1

enter code hereええと、これを試してください:

 window.parent.$("#divPOProduct").dialog("close");

または冗長な代替:

 window.parent.jQuery("#divPOProduct").dialog("close");

または代替

 window.parent.document.jQuery("#divPOProduct").dialog("close");

もう1つのオプション:

 window.opener.jQuery("#divPOProduct").dialog("close");

もう1つの試み:親ウィンドウに新しいJavaScript関数を作成します。

function closeMyDialog(){
    alert("closing my dialog");//to debug call
    jQuery("#divPOProduct").dialog("close");
}

次に、:(子ウィンドウで)を使用します

  window.parent.closeMyDialog();

また

  window.parent.closeMyDialog
于 2013-01-10T19:38:02.240 に答える
0

とりあえず、私の修正は、親ページを更新することです。これは私がやりたかったことではありませんが、それ以外の方法で修正できるまで、私の唯一の解決策です。 この方法論を使うのは嫌だ。

于 2013-01-17T19:36:13.323 に答える