[英]Retrieving Records From Entity in Dynamics Crm using odata and jquery
[英]Retrieving value of lookup entity using CRM REST BUILDER
我是 CRM Dynamics 的新手。 我有一個要求。
讓我們假設我有 2 個相關的實體: "Cat"
和"Dog"
,我分別有簡單的字段"Cat_Food"
和"Dog_Food"
。 我在實體貓的表單上有一個實體狗的查找字段,名為"Lookup_Cat"
。 現在,只要選擇了 Dog 的查找值,我就希望使用 Javascript 使用(選定的查找)Dog 的"Dog_Food"
字段值填充 Cat 的"Cat_Food"
字段。
現在我在很多網站上看到有人建議使用 CRM REST BUILDER。 我使用過它,但它沒有填充,也沒有給出任何錯誤:這是代碼:
// JavaScript source code
function abc(executionContext)
{
var formContext = executionContext.getFormContext();
var new_dogfood;
var lookup = new Array();
lookup = formContext.getAttribute("Cat_Food").getValue();
if (lookup != null)
{
var name = lookup[0].name;
var id = lookup[0].id;
var entityType = lookup[0].entityType;
}
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.1/Dog(id)?$select=Dog_Food", false);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.onreadystatechange = function()
{
if (this.readyState === 4)
{
req.onreadystatechange = null;
if (this.status === 200) {
var result = JSON.parse(this.response);
new_dogfood = result["Dog_Food"];
}
else
{
Xrm.Utility.alertDialog(this.statusText);
}
}
};
req.send();
var x = formContext.getAttribute("Cat_Food");
x.setValue(new_dogfood);
}
當您使用 Webpi 檢索數據,尤其是 Lookup Id、Lookup 主名稱和 Lookup Entity 架構名稱時,您必須在請求標頭中包含注釋。
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
我將在此處發布一個簡短的帳戶請求示例,我正在嘗試獲取帳戶實體上的主要帳戶(查找)和帳戶上的主要聯系人(查找)。
請求如下
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.1/accounts(290FB459-D1F4-E911-A813-000D3A4AA4FD)?$select=name,_parentaccountid_value,_primarycontactid_value", true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.onreadystatechange = function() {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {
var result = JSON.parse(this.response);
var name = result["name"];
var _parentaccountid_value = result["_parentaccountid_value"];
var _parentaccountid_value_formatted = result["_parentaccountid_value@OData.Community.Display.V1.FormattedValue"];
var _parentaccountid_value_lookuplogicalname = result["_parentaccountid_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
var _primarycontactid_value = result["_primarycontactid_value"];
var _primarycontactid_value_formatted = result["_primarycontactid_value@OData.Community.Display.V1.FormattedValue"];
var _primarycontactid_value_lookuplogicalname = result["_primarycontactid_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
} else {
Xrm.Utility.alertDialog(this.statusText);
}
}
};
這是我得到的回應
{
"@odata.context": "https://abc.xyz.dynamics.com/api/data/v9.1/$metadata#accounts(name,_parentaccountid_value,_primarycontactid_value)/$entity",
"@odata.etag": "W/\"23463189\"",
"name": "ABC Account name",
"_parentaccountid_value@OData.Community.Display.V1.FormattedValue": "Account Reassignment - 3010 NE",
"_parentaccountid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "parentaccountid",
"_parentaccountid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "account",
"_parentaccountid_value": "75e562f9-06fb-e911-a813-000d3a4aa2c1",
"_primarycontactid_value": null,
"accountid": "290fb459-d1f4-e911-a813-000d3a4aa4fd"
}
現在對您來說,上面代碼的有趣之處在於父帳戶的 4 行結果下方
"_parentaccountid_value@OData.Community.Display.V1.FormattedValue": "Account Reassignment - 3010 NE",
"_parentaccountid_value@Microsoft.Dynamics.CRM.associatednavigationproperty": "parentaccountid",
"_parentaccountid_value@Microsoft.Dynamics.CRM.lookuplogicalname": "account",
"_parentaccountid_value": "75e562f9-06fb-e911-a813-000d3a4aa2c1",
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.