2013-01-10 209 views
0

我目前正在使用View来加载对话框。该视图处理正在购买的产品的插入和编辑。关闭jQuery对话框

我遇到的问题是当我保存我的产品时,我需要关闭对话框并刷新原始页面上的网格。当我尝试这样做时,我试图在父母中找到对话框并触发关闭事件。到目前为止,我一直无法找到父对话。我已经能够找到网格并强制刷新。

我的问题是,有没有办法触发从对话框内关闭?顺便说一句,我不知道这是否是问题的一部分,但我使用完整的视图作为我的对话框而不是局部视图。

任何帮助,将不胜感激。谢谢。

最亲切的问候, 乍得

编辑:这是我的代码。

视图(父页)

... 
<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,但不能找到对话框。顺便说一句,从结果返回的所有内容都是真/假。

+1

我们可以看到你的代码吗? –

+0

是的,我的歉意。 – IyaTaisho

回答

0

对于暂时,我的修复是我刷新父页面。这不是我想要做的,但直到我能解决它,否则,我唯一的解决方案。 感觉脏讨厌使用这种方法。

1

enter code here嗯试试这个:

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

或详细备用:

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 
+0

在那里,试过了。更不用说,这已经在我的代码上面了......我得到以下错误,指向完全相同的行:错误:对象不支持此属性或方法。 – IyaTaisho

+0

因为什么是值得的,你发布的代码示例是不一样的 - 缺少“#” –

+0

我曾尝试过你的原版,并有同样的问题。刚刚尝试了上述所有,并没有骰子。 编辑:我收回,最后一个没有导致错误。只是没有做到,哈哈。 – IyaTaisho