本文将比较二种查询字符串在同一个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

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

我们必须用 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。

返回的结果如下:

我们可以用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学习笔记 系列汇总

Dynamic CRM 2015学习笔记(3)oData 查询方法及GUID值比较的更多相关文章

  1. Dynamic CRM 2015学习笔记(5)CRM 2015 导入 OData Query Designer 解决方案

    以前一直使用OData Query Designer来生成.验证odata查询字符串,本想把它导入到CRM 2015的环境里,但报错: 到MSDN上发现太老版本的solution确实不能再导入到crm ...

  2. Dynamic CRM 2015学习笔记 系列汇总

    这里列出所有 Dynamic CRM 2015学习笔记 系列文章,方便大家查阅.有任何建议.意见.需要,欢迎大家提交评论一起讨论. 本文原文地址:Dynamic CRM 2015学习笔记 系列汇总 一 ...

  3. Dynamic CRM 2015学习笔记(1)Azure 上安装 CRM 2015

    今天终于在Azure上安装成功了CRM 2015,下面简单介绍下安装过程,以及出现问题的解决: 一. 配置AD, 安装IIS 参考下面的link,里面有详细的配置步骤 http://www.c-sha ...

  4. Dynamic CRM 2015学习笔记(2)更改系统显示语言

    默认装的是英文的系统,想换成中文的.下面列出操作步骤: 1. 下载并安装语言包 http://www.microsoft.com/en-US/download/details.aspx?id=4501 ...

  5. Dynamic CRM 2015学习笔记(4)修改开发人员资源(发现服务、组织服务和组织数据服务)url地址及组织名

    在azure vm上安装了CRM 2015后 Dynamic CRM 2015学习笔记(1)Azure 上安装 CRM 2015, 发现了一个问题,那就是在设置 ->自定义项 –> 开发人 ...

  6. Dynamic CRM 2015学习笔记(6)没有足够的权限 - 您没有访问这些记录的权限。请联系 Microsoft Dynamics CRM 管理员

    我们经常遇到下面这种问题:没有足够的权限 - 您没有访问这些记录的权限.请联系 Microsoft Dynamics CRM 管理员.  下面将详细介绍下如何解决这种问题:进不了CRM系统:进了CRM ...

  7. Dynamic CRM 2013学习笔记 系列汇总

    这里列出所有 Dynamic CRM 2013学习笔记 系列文章,方便大家查阅.有任何建议.意见.需要,欢迎大家提交评论一起讨论. 本文原文地址: Dynamic CRM 2013学习笔记 系列汇总 ...

  8. Dynamic CRM 2013学习笔记(九)CrmFetchKit.js介绍:Fetchxml、多表联合查询, 批量更新

    CrmFetchKit.js是一个跨浏览器的一个类库,允许通过JavaScript来执行fetch xml的查询,还可以实现批量更新,分页查询等.目前已支持Chrome 25, Firefox 19 ...

  9. Dynamic CRM 2013学习笔记(十)客户端几种查询数据方式比较

    我们经常要在客户端进行数据查询,下面分别比较常用的几种查询方式:XMLHttpRequest, SDK.JQuery, SDK.Rest. XMLHttpRequest是最基本的调用方式,JQuery ...

随机推荐

  1. 解决Window安全中心对Kitematic-0.17.3-Ubuntu.zip提示病毒,但无法删除的问题。

    Trojan:JS/Tisifi.B 类型:特洛伊木马 containerfile: C:\Users\Administrator\Desktop\Kitematic-0.17.3-Ubuntu.zi ...

  2. async并发处理

  3. 使用cmd命令删除文件夹下所有文件

    rmdir 删除整个目录 好比说我要删除 222 这个目录下的所有目录和档案,这语法就是: rmdir /s/q 222 其中: /s 是代表删除所有子目录跟其中的档案. /q 是不要它在删除档案或目 ...

  4. .Net中EF通用数据层小结

    增删改查: using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; u ...

  5. AJAX+springmvc遇到的问题

    当我使用AJAX将表单的值传入处理器中后,经过了一个判断再进行页面跳转时,不能在处理器中使用重定向,它会将重定向的页面内容在AJAX的data中显示出来而不是显示一个页面 所以只能在AJAX 的suc ...

  6. 【转】Java基础——容器分类

    Java容器可以说是增强程序员编程能力的基本工具,本系列将带您深入理解容器类. 容器的用途 如果对象的数量与生命周期都是固定的,自然我们也就不需要很复杂的数据结构. 我们可以通过创建引用来持有对象,如 ...

  7. 堆排序的Python实现

    参考: https://www.jianshu.com/p/d174f1862601

  8. 使用IWMS的网站打开显示“未能加载文件或程序集”,解决方案

    首先,会出现这样的问题原因是: 1.应用程序集里面有些事互相引用的,所以 问题有多种情况,第一.这个应用程序集出问题了: 2.它所依赖的那个程序集出问题了: 3.在项目生成的时候,代码里面有逻辑错误: ...

  9. sql行转列实例

    select gh ,xm , max(A.bz) as bz , max(A.jcz) as jcz , max(A.dl) as dl , max(A.czzx) as czzx , max(A. ...

  10. INotifyPropertyChanged

    在WPF MVVM模式开发中,实现INotifyPropertyChanged的ViewModel是非常重要且常见的类: public class MainViewModel : INotifyPro ...