Dynamic CRM 2015学习笔记(3)oData 查询方法及GUID值比较

本文将比较二种查询字符串在同一个oData查询方法中的不同,另外,还将介绍如何比较不同方法返回的GUID的值。

用同一个oData查询方法,如果传入查询的字符串不一样,返回结果的格式竟然完全不一样。

 

1. oData查询方法:

//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. 第一种查询方法

查询参数如下:

var buValue = Xrm.Page.getAttribute('tm_businessunit').getValue() [0].id;var oDataString = 'BusinessUnitSet?$select=tm_systemuser_businessunit_nltautosales/ParentSystemUserId&$expand=tm_systemuser_businessunit_nltautosales&$filter=BusinessUnitId eq guid\'' + buValue + '\'';

这里用到了filter

可以看到返回的结果格式如下:

image

我们必须用 retrievedOpp.results[0].tm_systemuser_businessunit_nltautosales.ParentSystemUserId  来获取结果

 

3. 第二种查询方法

查询参数如下:

var buValue = Xrm.Page.getAttribute('tm_businessunit').getValue() [0].id;var oDataString = 'BusinessUnitSet(guid\'' + buValue + '\')?$select=tm_systemuser_businessunit_nltautosales/ParentSystemUserId&$expand=tm_systemuser_businessunit_nltautosales';

这里没有用到filter,直接用的guid。

返回的结果如下:

image我们可以用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 相关的方法、属性以及页面字段),及发布前调试

 

 

 

Dynamic CRM 2015学习笔记 系列汇总

Dynamic CRM 2013学习笔记 系列汇总



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   疯吻IT  阅读(3393)  评论(1编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示