2016-09-06 121 views
1

我正在使用腳本來填充來自另一個實體的信息的一個實體。它工作得很好,我可以爲所有靜態字段做任何事情。Dynamics CRM 2016 - 檢索lookupfield值

但是,當其中一個字段是查找字段時,它不起作用。

有人請指出我在正確的方向得到下面的工作?

在以下示例中,new_rehabconsultant字段是聯繫表單上的查找字段。 new_UnitNumber是一個靜態的單行文本字段。該new_UnitNumber被填充精細,new_rehabconsultant查找字段是不是

function Contact_OnChange() { 
var contact = Xrm.Page.getAttribute("regardingobjectid").getValue(); 

if (contact == null) { 
    return; 
} 

var serverUrl = Xrm.Page.context.getClientUrl(); 
var oDataSelect = serverUrl + "/XRMServices/2011/OrganizationData.svc/ContactSet?$select=new_UnitNumber,new_rehabconsultant&$filter=ContactId eq guid'" + contact[0].id + "'"; 

var retrieveReq = new XMLHttpRequest(); 
retrieveReq.open("GET", oDataSelect, false); 
retrieveReq.setRequestHeader("Accept", "application/json"); 
retrieveReq.setRequestHeader("Content-Type", "application/json;charset=utf-8"); 
retrieveReq.onreadystatechange = function() { 
    GetContactData(this); 
}; 
retrieveReq.send(); 
} 

function GetContactData(retrieveReq) { 
if (retrieveReq.readyState == 4) { 
    if (retrieveReq.status == 200) { 
     var retrieved = JSON.parse(retrieveReq.responseText).d; 
       Xrm.Page.getAttribute("new_unitnumber").setValue(retrieved.results[0].new_UnitNumber); 
    Xrm.Page.getAttribute("new_rehabconsultant").setValue(retrieved.results[0].new_rehabconsultant); 
    } 
} 
} 

回答

1

你試圖適應這裏的三角形內的立方體,它的數據模型是OData的(實體引用)和表格(之間不同的問題擡頭)。

你應該這樣做(略改寫可讀性):

function GetContactData(retrieveReq) { 
    if (retrieveReq.readyState == 4) { 
     if (retrieveReq.status == 200) { 
      var retrieved = JSON.parse(retrieveReq.responseText).d; 
      Xrm.Page.getAttribute("new_unitnumber").setValue(retrieved.results[0].new_UnitNumber); 
      var record = retrieved.results[0].new_rehabconsultant; 
      // mind the square brackets, lookup values are *arrays* 
      var value = [{ id: record.Id, name: record.Name, entityType: record.LogicalName }]; 

      Xrm.Page.getAttribute("new_rehabconsultant").setValue(value); 
     } 
    } 
} 

要注意的是這並不意味着要複製粘貼,但作爲一個不好的事在OP的PoC。

+0

Alex,謝謝你的回覆。我已經嘗試將其納入上述代碼中,但沒有成功。你能告訴我它應該看起來如何嗎? – Matt

+0

編輯合併OP代碼 – Alex

相關問題