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

XMLHttpRequest是最基本的调用方式,JQuery和Rest的二种方式其实也是用的XMLHttpRequest,只不过是把它封装了一下

JQuery和Rest二种方式的接口一样,所以调用方式也一样

1. XMLHttpRequest

  • 定义
  1: function ODataRetrieve(oDataString) {
  2:     var ServerUrl = Xrm.Page.context.getClientUrl();
  3:     if (ServerUrl.match(/\/$/)) {
  4:         ServerUrl = ServerUrl.substring(0, ServerUrl.length - 1);
  5:     }
  6:     var retrieveReq = new XMLHttpRequest();
  7:     retrieveReq.open("GET", ServerUrl + "/XRMServices/2011/OrganizationData.svc/" + oDataString, false);
  8:     retrieveReq.setRequestHeader("Accept", "application/json");
  9:     retrieveReq.setRequestHeader("Content-Type", "application/json;charset=utf-8");
 10:     retrieveReq.send();
 11:     return JSON.parse(retrieveReq.responseText).d;
 12: }
 
  • 调用方法:
  1: var retrievedContact = ODataRetrieve("ContactSet(guid'" + ContactAttribute.getValue()[0].id + "')?Select=JobTitle,MobilePhone");
  2:     if (retrievedContact != null) {
  3:         ContactJobAttribute.setValue(retrievedContact.JobTitle);
  4:         ContactPhoneAttribute.setValue(retrievedContact.MobilePhone);
  5: }
 
2. SDK.JQuery
  • SDK.JQuery.js 位于SDK\SampleCode\JS\RESTEndpoint\JQueryRESTDataOperations\JQueryRESTDataOperations\Scripts下

  1: retrieveRecord: function (id, type, select, expand, successCallback, errorCallback)
  2: retrieveMultipleRecords: function (type, options, successCallback, errorCallback, OnComplete)
  • 调用方法:
  1: SDK.JQuery.retrieveRecord(
  2:      AccountId,
  3:      "Account",
  4:      null, null,
  5:      function (account) {
  6:       writeMessage("Retrieved the account named \"" + account.Name + "\". This account was created on : \"" + account.CreatedOn + "\".");
  7:       updateAccount(AccountId);
  8:      },
  9:      errorHandler
 10:    );
 11: 
 
  1: SDK.JQuery.retrieveMultipleRecords(
  2:      "Contact",
  3:      "$select=ContactId,FullName&$top=1",
  4:      function (results) {
  5:       var firstResult = results[0];
  6:       if (firstResult != null) {
  7:        primaryContact = results[0];
  8:       }
  9:       else {
 10:        writeMessage("No Contact records are available to set as the primary contact for the account.");
 11:       }
 12:      },
 13:      errorHandler,
 14:      function () {
 15:       //OnComplete handler
 16:      }
 17:    );
 18: 

3. SDK.Rest

  • SDK.Rest.js 位于SDK\SampleCode\JS\RESTEndpoint\JavaScriptRESTAssociateDisassociate\JavaScriptRESTAssociateDisassociate\Scripts下
  1: retrieveRecord: function (id, type, select, expand, successCallback, errorCallback)
  2: retrieveMultipleRecords: function (type, options, successCallback, errorCallback, OnComplete)
  • 调用方法:
  1:  SDK.REST.retrieveRecord(
  2:      AccountId,
  3:      "Account",
  4:      null,null,
  5:      function (account) {
  6:       writeMessage("Retrieved the account named \"" + account.Name + "\". This account was created on : \"" + account.CreatedOn + "\".");
  7:       updateAccount(AccountId);
  8:      },
  9:      errorHandler
 10:    );
 11: 
  1: SDK.REST.retrieveMultipleRecords(
  2:      "Contact",
  3:      "$select=ContactId,FullName&$top=1",
  4:      function (results) {
  5:       var firstResult = results[0];
  6:       if (firstResult != null) {
  7:        primaryContact = results[0];
  8:       }
  9:       else {
 10:        writeMessage("No Contact records are available to set as the primary contact for the account.");
 11:       }
 12:      },
 13:      errorHandler,
 14:      function () {
 15:      //OnComplete handler
 16:       }
 17:    );
 18: 
 
Dynamic CRM 2013学习笔记 系列汇总
 
 

Dynamic CRM 2013学习笔记(十)客户端几种查询数据方式比较的更多相关文章

  1. Dynamic CRM 2013学习笔记(二十)字段改变事件的二种实现方法

    CRM里有二种方式实现字段change事件,一种是在form里,一种完全通过js来实现.本文介绍下二者的用途及区别. 1. Form里用法 这种方式估计其实也是添加一个js的function. 这种方 ...

  2. Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能

    前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现 ...

  3. Dynamic CRM 2013学习笔记(二十六)报表设计:Reporting Service报表 动态参数、参数多选全选、动态列、动态显示行字体颜色

    上次介绍过CRM里开始报表的一些注意事项:Dynamic CRM 2013学习笔记(十五)报表入门.开发工具及注意事项,本文继续介绍报表里的一些动态效果:动态显示参数,参数是从数据库里查询出来的:参数 ...

  4. Dynamic CRM 2013学习笔记(二十九)报表设计:reporting service 报表开发常见问题

    在报表开发过程中,经常会遇到各种各样的问题,比如The report cannot be displayed. (rsProcessingAborted),一点有意义的提示都没有:再就是分页问题,经常 ...

  5. Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置

    上次介绍了<Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示> 以及如何配置自定义审批流的按钮:<Dynamic CRM 2013学习笔记(二十一)自定义 ...

  6. Dynamic CRM 2013学习笔记(四十六)简单审批流的实现

    前面介绍过自定义审批流: Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示 Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮 Dynamic ...

  7. Dynamic CRM 2013学习笔记(十二)实现子表合计(汇总,求和)功能的通用插件

    上一篇 Dynamic CRM 2013学习笔记(十一)利用Javascript实现子表合计(汇总,求和)功能 , 介绍了如何用js来实现子表合计功能,这种方法要求在各个表单上添加js方法,如果有很多 ...

  8. Dynamic CRM 2013学习笔记(十四)复制/克隆记录

    经常有这样的需求,一个单据上有太多要填写的内容,有时还关联多个子单据,客户不想一个一个地填写,他们想从已有的单据上复制数据,克隆成一条新的记录.本文将介绍如何克隆一条记录,包括它的子单据以生成一条新的 ...

  9. Dynamic CRM 2013学习笔记(二十二)插件里调用WCF服务

      1. 添加service:     2.调用WCF BasicHttpBinding myBinding = new BasicHttpBinding(); myBinding.Name = &q ...

随机推荐

  1. java基础知识点复习

    第一天: JRE.JDK是什么? Jre java运行环境.Jre = java虚拟机+核心类库(辅助java运行的文件) Jdk:java开发工具集jdk = jre+java的开发工具 2. 配置 ...

  2. 解决Nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid

    重新启动服务器,访问web服务发现无法浏览啦!登陆服务器之后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr ...

  3. javascript组件化

    http://purplebamboo.github.io/2015/03/16/javascript-component/#%E5%BC%95%E5%85%A5%E4%BA%8B%E4%BB%B6% ...

  4. [珠玑之椟]浅谈代码正确性:循环不变式、断言、debug

    这个主题和代码的实际写作有关,而且内容和用法相互交织,以下只是对于其内容的一个划分.<编程珠玑>上只用了两个章节20页左右的篇幅介绍,如果希望能获得更多的实例和技巧,我比较推崇<程序 ...

  5. Brn系列网上商城数据库说明文档

    单店版BrnShop_1.9.351数据字典:点击下载 多店版BrnMall_1.9.496数据字典:点击下载 有对网上商城程序设计感兴趣的朋友,欢迎加入QQ群:235274151,大家可以交流下!

  6. java1.7集合源码阅读: Stack

    Stack类也是List接口的一种实现,也是一个有着非常长历史的实现,从jdk1.0开始就有了这个实现. Stack是一种基于后进先出队列的实现(last-in-first-out (LIFO)),实 ...

  7. Selenium2+python自动化18-加载Firefox配置

    前言 有小伙伴在用脚本启动浏览器时候发现原来下载的插件不见了,无法用firebug在打开的页面上继续定位页面元素,调试起来不方便 . 加载浏览器配置,需要用FirefoxProfile(profile ...

  8. centos搭建NFS网络文件系统

    NFS服务器端 安装NFS服务器非常之简单: yum install nfs-utils protmap 这样就安装好了,其中nfs-utils是提供NFS服务器程序和相应的管理工具.protmap是 ...

  9. 重置mysql数据库密码相关方法

    方法一: 在my.ini的[mysqld]字段加入:skip-grant-tables重启mysql服务,这时的mysql不需要密码即可登录数据库 然后进入mysqlmysql>use mysq ...

  10. servlet实现的三种方式对比(servlet 和GenericServlet和HttpServlet)

    第一种: 实现Servlet 接口 第二种: 继承GenericServlet 第三种 继承HttpServlet (开发中使用) 通过查看api文档发现他们三个(servlet 和GenericSe ...