Dynamics CRM2016 Web API之更新记录

本篇继续探索web api,介绍如何通过web api更新记录。

下面是一段简单的更新代码,更新了几个不同类型的字段,entity的赋值和前篇创建时候的一样的。

var entity = {};
    entity["name"] = '测试更新';//文本
    entity["new_gender"] = 100000001;//选项集
    entity["new_birth"] = new Date();//日期
    entity["[email protected]"] = "/new_tests(55579B39-39E7-E511-9414-ADA183AB6249)";//lookup
    entity["new_bool"] = false;//bool
    entity["revenue"] = 255;//货币
    var jsonEntity = window.JSON.stringify(entity);
    var  id="D1E50347-86EB-E511-9414-ADA183AB6249";
    $.ajax({
        async: false,
        type: "PATCH",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        data: jsonEntity,
        url: Xrm.Page.context.getClientUrl() + "/api/data/v8.0/accounts(" + id.replace('{', '').replace('}', '') + ")",
        success: function (data, textStatus, XmlHttpRequest) {
            if (XmlHttpRequest.status=='204') {
                alert('更新成功');
            }
        },
        error: function (XmlHttpRequest, textStatus, errorThrown) {
        }
    });

下面两张图是更新前后的对比

新的更新操作的API几个需要注意的地方:

1、这里的请求type是patch了还不是post

2、这里的返回状态值为204即为更新成功,没有返回值

3、有一种方式的更新要注意,比如你先retrieve出了一个实体的所有属性,然后更改查询出来的entity里的某几个属性字段,再直接把这个entity request出去的话,那对于这个entity里的某些字段的内容没有做过更改系统也进行更新,最直接的体会就是在审核日志中的update记录中有这些字段更新记录(但实际你并没有更改字段内容),所以更新时最好new一个entity出来再进行复制。

以下是上述第三点讲到的sdk中的原文说明

时间: 2024-10-05 21:08:58

Dynamics CRM2016 Web API之更新记录的相关文章

Dynamics CRM2016 Web Api之更新时间字段值

前篇我们论述了时间字段的查询,本篇来论述下时间字段的更新. 还是以之前建的当地时间(时间行为为用户当地时间)字段来测试 可以看到web api更新的是数据库的时间,而在前台的反映就是做了加8处理,所以后期在时间字段的处理上要多加注意,分清楚该之间字段的行为到底是什么.

Dynamics CRM2016 Web API之删除

相比之前的增改查,删除就显得简单的多了. 这里的request的type为delete,删除成功的status为204,404则是要删除的记录不存在 var id = 'BAD90A95-7FEA-E511-9414-ADA183AB6249'; $.ajax({ async: false, type: "DELETE ", contentType: "application/json; charset=utf-8", url: Xrm.Page.context.g

Dynamics CRM2016 Web API之Use custom FetchXML

CRM2016中新增的web api支持fetch xml了,之前使用FetchXML的场景是在后天代码中通过组织服务的retrieve multiple方法,但实际的应用效果有多大,还需要在实际的项目中去体会了. 上代码,注意要对fetch xml进行编码 var fetch="<fetch mapping='logical'>" +"<entity name='account'>" +"<attribute name='a

Dynamics CRM2016 Web API之Create related entities in one operation

本篇继续来介绍两个web api的接口,一个是"Create related entities in one operation"即在一步操作中完成主实体的创建加关联实体的创建,一个是"Associate entities on create"即在创建记录的时候填充lookup字段. 先来说第一个api,老规矩直接上代码,稍微做下解释,注意下面的几点不存在先后顺序,我只是分开说明罢了 1.这里创建一个account实体记录 2.创建一条名为"John Sm

Dynamics CRM2016 Web API之获取查找字段的text及选项集的text

本篇再来介绍个web api的功能,关于lookup的text这里只是略带,因为有expand,现有的web api就能实现,主要提的是选项集的text,我们通过基本的查询api查出来的字段值只带有value,如果想要获取text也很简单,只需要在request的头部加一条信息即可,下面分别给出了C#及JS的示例代码. HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(weburi); req.Credentials = new

Dynamics CRM2016 Web API之Retrieve Multiple

之前的博文仅仅介绍了通过记录的primary key来查询单条记录或者单个属性值,本篇介绍多条记录的查询方法 var filter = "? $filter=name eq '123'"; var req = new XMLHttpRequest() req.open("get", Xrm.Page.context.getClientUrl() + "/api/data/v8.0/accounts/" + filter, false); req.

Dynamics CRM 2015/2016/365 Web API:用户模拟

今天再更新一篇关于在Web API接口中使用用户模拟这一功能,用户模拟在Dynamics CRM开发中已经不是新概念了,历任接口都支持这个功能.在介绍怎么在Web API中使用该功能之前,我们先来过一遍用户模拟的具体功能. 用户模拟,顾名思义,即为模拟其他用户.在调用接口的时候如果我们都需要提供一个账号密码信息,但是很多时候,我们的接口的认证信息是一个集成账号,但是我们却希望通过这个接口创建的记录的创建者是其它用户.如果你有这个需求,你就需要用到用户模拟功能. 在Dynamics CRM Web

Dynamics CRM 2015 Web API:简介

最近Dynamics CRM又有新动作啦,同学们可知道否,在未来的版本中,我们现在使用的基于SOAP的API们将被淘汰,取代它们的是现在流行的Web API.对于这两类API,各有优势,但是对于微软选择后者,更多的原因还是想在移动端有所建树,毕竟基于SOAP的API对于移动端来说显得过于笨重. 这消息对我们来说有好也是有坏的,坏处就是,哈哈,大家又要开始学习一套新的API编程知识:至于好处嘛,那就是Web API更灵活,我们仅仅需要写几行代码就能实现API调用.例如:如果我们用SOAP API在

Dynamics CRM 2015/2016 Web API:Unbound Function 和 Bound Function

今天我们来看看Dynamics CRM Web API Function 吧, 这是一个新概念,刚接触的时候我也是比较的迷糊,这样的命名确实是和之前的那套基于SOAP协议的API完全联系不上.好了,不说闲话了.这里的Function呢,就我来看,更像是一些被封装好的原生函数和老API中的Request差不多的意思,只是API的架构方式变了,所以名称也就跟着变了. 我们之前要查看当前登录用户的信息,需要调用WhoAmIRequest,那现在呢?我们需要调用WhoAmI Function. 这里的F