2016-03-07 34 views
0

我有一個場景,我允許用戶單擊功能區按鈕,然後打開URL並將CRM表單數據作爲參數傳遞給URL,在打開的URL網站中,我閱讀了參數並對它們做了一些處理,現在我的問題是如何在用戶關閉打開的網站URL時自動保存CRM記錄,如何建立CRM表單與打開的外部網站之間的鏈接窗口。我知道JavaScript,但我可以爲我們parent.Xrm.Page.data.entity.save();在外部網站,這是可能的。請幫助CRM Dynamics如何在瀏覽器窗口關閉時自動保存記錄

+0

@Filburt我不明白這將如何解決我的問題,因爲我的問題是我想在外部窗口關閉時自動保存並且不依賴於用戶保存。你可能會詳細說明,也許我誤解了你。 – Papi

+0

我使用了(不支持的)'Xrm.Internal.openDialog',它允許回調函數以及窗口的對話結果。這將允許您在關閉窗口時保存數據。如果你有興趣,我會發佈一個例子。 – Filburt

+0

@Filburt是的,我可以請你給我一個例子。 – Papi

回答

0

不受支持的方法是使用Xrm.Internal.Dialog

你的功能區按鈕的腳本調用外部窗口:

var encodeUrlParameter = "?data=" + encodeURIComponent('&param1=foo&param2=baz') 

var src = "$webresource:new_your_webpage.html" + encodeUrlParameter; 

var DialogOptions = new Xrm.DialogOptions(); 
DialogOptions.width = 540; 
DialogOptions.height = 305; 

Xrm.Internal.openDialog(src, DialogOptions, null, null, function (dialogResult) { 
    if (dialogResult != null) { 
     Xrm.Page.getAttribute("new_foo").setValue(dialogResult); 
     Xrm.Page.data.entity.save(); 
    } 
}); 

您的對外窗口的代碼來處理「好了,接近」事件:

function Okay() { 
    // set your return value 
    Mscrm.Utilities.setReturnValue("foo"); 

    try { 
     closeWindow(true); // Close the dialog box 
    } 
    catch (e) { 
     Xrm.Utility.alertDialog(e.message); 
    } 
} 

您的外部頁面仍需引用CRM全局上下文:

<script src="ClientGlobalContext.js.aspx" type="text/javascript"></script> 
+0

謝謝,我現在就試試看。也會標記你的答案。 – Papi

+1

像往常一樣處理不支持的方法時,請記住'Xrm.Internal'名稱空間內的任何內容都可以更改,中斷或消失而不會發出警告 – Alex