本文将比较二种查询字符串在同一个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 相关的方法、属性以及页面字段),及发布前调试