本文將比較二種查詢字符串在同一個oData查詢方法中的不一樣,另外,還將介紹如何比較不一樣方法返回的GUID的值。html
用同一個oData查詢方法,若是傳入查詢的字符串不同,返回結果的格式居然徹底不同。json
1. oData查詢方法:app
//OData查詢
ODataRetrieve: function (oDataString) {
var retrieveReq = new XMLHttpRequest();
retrieveReq.open("GET", encodeURI(Xrm.Page.context.getClientUrl() + "/XRMServices/2011/OrganizationData.svc/" + oDataString), false);
retrieveReq.setRequestHeader("Accept", "application/json");
retrieveReq.setRequestHeader("Content-Type", "application/json;charset=utf-8");
retrieveReq.send();
return JSON.parse(retrieveReq.responseText).d;
}
2. 第一種查詢方法post
查詢參數以下:學習
這裏用到了filterui
能夠看到返回的結果格式以下:url
咱們必須用 retrievedOpp.results[0].tm_systemuser_businessunit_nltautosales.ParentSystemUserId 來獲取結果 spa
3. 第二種查詢方法調試
查詢參數以下:code
這裏沒有用到filter,直接用的guid。
返回的結果以下:
咱們能夠用retrievedOpp.tm_systemuser_businessunit_nltautosales.ParentSystemUserId 來獲取結果
4. GUID比較
若是guid都是從界面上用同一方法好比getValue()取的guid,咱們能夠直接用[0].id來比較它們的值,若是用oData返回的guid和界面上getValue()取的guid來比較,會發現用上面oData查詢方法返回的guid值沒有{},並且是小寫的;而界面上用getValue()取的guid不只用{},並且是大寫。這時若是直接用==來比較,確定是不行的。下面介紹了一種通用的比較方法。
//判斷兩個GUID是相同
GuidsisEqual: function (guid1, guid2) {
var isEqual = false;
if (guid1 != null && guid2 != null) {
isEqual = guid1.replace(/[{}]/g, "").toLowerCase() == guid2.replace(/[{}]/g, "").toLowerCase();
}
return isEqual;
}
能夠參考之前的一篇博客 Dynamic CRM 2013學習筆記(二十三)CRM JS智能提示(CRM 相關的方法、屬性以及頁面字段),及發佈前調試