我目前正致力于使用View加载对话框。此视图处理正在购买的产品的插入和编辑。
我遇到的问题是当我保存产品时,我需要关闭对话框并刷新原始页面上的网格。当我尝试这样做时,我试图在父母中找到对话框并触发关闭事件。到目前为止,我一直无法在父母中找到对话框。我已经能够找到网格并强制它刷新。
我的问题是,有没有办法从对话框中触发关闭?顺便说一下,我不确定这是不是问题的一部分,但我使用的是完整的View for my dialog而不是Partial View。
任何帮助将不胜感激。感谢。
最基本的问候, 乍得
编辑:这是我的代码。
查看(父页面)
...
<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语句中看到的三次尝试结果是我到目前为止所尝试的。我现在可以找到父节点和div,但不能找到对话框。顺便说一句,从结果返回的所有内容都是真/假。
答案 0 :(得分:1)
enter code here
嗯试试这个:
window.parent.$("#divPOProduct").dialog("close");
OR verbose alternate:
window.parent.jQuery("#divPOProduct").dialog("close");
或替代
window.parent.document.jQuery("#divPOProduct").dialog("close");
另一个选择:
window.opener.jQuery("#divPOProduct").dialog("close");
另一个尝试:在父窗口上创建一个新的JavaScript函数:
function closeMyDialog(){
alert("closing my dialog");//to debug call
jQuery("#divPOProduct").dialog("close");
}
然后使用:(在子窗口上)
window.parent.closeMyDialog();
或
window.parent.closeMyDialog
答案 1 :(得分:0)
目前,我的修复是刷新父页面。这不是我想做的,但除非我能解决它,否则,我唯一的解决方案。 感觉很脏讨厌使用这种方法。