2013-01-10 257 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