Dynamics CRM2016 Web API之更新记录
本篇继续探索web api,介绍如何通过web api更新记录。
下面是一段简单的更新代码,更新了几个不同类型的字段,entity的赋值和前篇创建时候的一样的。
var entity = {};
entity["name"] = '测试更新';//文本
entity["new_gender"] = 100000001;//选项集
entity["new_birth"] = new Date();//日期
entity["new_testid@odata.bind"] = "/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中的原文说明
4、前面给出的是一个基本的update代码,一旦你要更新的记录在系统中不存在,执行上面那段代码直接update会出问题,request请求就不是update一条记录而变成create一条记录了,所以要在请求header中加这么一段setRequestHeader("If-Match",
"*"),这样执行后会报404,记录不存在。
再者如果我就想用上述代码来创建一条记录,那你要校验啊,我给定的这个guid在系统中不存在我才创建,所以要在header中加这么一段setRequestHeader("If-None-Match",
"*"),一旦存在就抛错不创建了。
Dynamics CRM2016 Web API之更新记录的更多相关文章
- Dynamics CRM2016 Web API之更新记录的单个属性字段值
在web api中提供了对单个属性的更新接口,这和查询中查询单个属性类似,对这个接口我个人也是比较喜欢的. var id = "{D1E50347-86EB-E511-9414-ADA183 ...
- Dynamics CRM2016 Web API之创建记录
前篇介绍了通过primary key来查询记录,那query的知识点里面还有很多需要学习的,这个有待后面挖掘,本篇来简单介绍下用web api的创建记录. 直接上代码,这里的entity的属性我列了几 ...
- Dynamics CRM2016 Web Api之更新时间字段值
前篇我们论述了时间字段的查询,本篇来论述下时间字段的更新. 还是以之前建的当地时间(时间行为为用户当地时间)字段来测试 可以看到web api更新的是数据库的时间,而在前台的反映就是做了加8处理,所以 ...
- Dynamics CRM2016 Web Api之分页查询
在dynamics crm web api还没出现前,我们是通过fetchxml来实现的,当然这种方式依旧可行,那既然web api来了我们就拥抱新的方式. web api中我们通过指定查询的条数来实 ...
- Dynamics CRM2016 Web API之通过实体的primary key查询记录
CRM2016启用了webapi 而弃用了odata,作为码农的我们又开始学习新东西了. 下面是一段简单的查询代码,通过systemuser的primary key来查询一条记录 Web API查询方 ...
- Dynamics CRM2016 Web API获取实体元数据Picklist属性的Text&Value
通过组织服务中获取实体picklist字段的text和value可以通过RetrieveAttributeRequest实现,但在使用web api的今天该怎么实现,本文即来一探究竟,本篇基于SDK中 ...
- Dynamics CRM2016 Web Api之根据时间查询数据
我的博文里已经有多次提到CRM中的时间处理问题了,本篇继续探讨在web api的场景下时间字段如何处理,本篇只涉及查询,针对2016中新增的时间行为"用户当地时间"和"无 ...
- Dynamics CRM2016 Web API之Use custom FetchXML
CRM2016中新增的web api支持fetch xml了,之前使用FetchXML的场景是在后天代码中通过组织服务的retrieve multiple方法,但实际的应用效果有多大,还需要在实际的项 ...
- Dynamics CRM2016 Web API之Create related entities in one operation
本篇继续来介绍两个web api的接口,一个是"Create related entities in one operation"即在一步操作中完成主实体的创建加关联实体的创建,一 ...
随机推荐
- [LeetCode] Monotone Increasing Digits 单调递增数字
Given a non-negative integer N, find the largest number that is less than or equal to N with monoton ...
- [LeetCode] Brick Wall 砖头墙壁
There is a brick wall in front of you. The wall is rectangular and has several rows of bricks. The b ...
- 【Swift】ios开发中巧用 description 打印对象时,打印对象的属性
ios开发中我们打印对象的时候,会直接输出对象地址,这样不方便我们开发.我们可以 巧用 description 打印对象时,输出对象的属性 在oc中直接重写即可.swift中需要遵守Printable ...
- 第一届“百度杯”信息安全攻防总决赛_Upload
题目见i春秋ctf训练营 看到fast,就想抓个包看看,以前有道题是打开链接直接来了个跳转,当然这题不是 查看返回包,发现一个好东西 拿去base64解码看看 感觉给出的字符串能继续解码,果然解码后得 ...
- [测试题]神在夏至祭降下了神谕(oracle)
Description 我们村子在过去的 400 年中, 断绝与下界的接触, 过着自给自足的生活.夏至祭是一场迎接祖灵于夏季归来, 同时祈求丰收的庆典.村里的男人会在广场上演出夏之军和冬之军的战争. ...
- C语言程序注释风格
良好编程习惯的养成对于一个程序员的发展非常重要,而注释对于一份程序来讲又是一个必不可少的组成部分,今天来研究一下C语言程序的注释风格. 注释是源码程序中非常重要的一部分,一般情况下,源程序有效注释量必 ...
- Python中模块之sys的功能介绍
sys模块的功能介绍 1. sys的变量 argv 命令行参数 方法:sys.argv 返回值:list 例如:test1.py文件中有两句语句1.import sys 2.print(sys.arg ...
- urllib,request 设置代理
通常防止爬虫被反主要有以下几个策略: 1.动态设置User-Agent(随机切换User-Agent,模拟不同用户的浏览器信息) 2.使用IP地址池:VPN和代理IP,现在大部分网站都是根据IP来b ...
- python3全栈开发-多进程的守护进程、进程同步、生产者消费者模式(重点)
一.守护进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes a ...
- hibernate4整合spring3出现java.lang.NoClassDefFoundError: [Lorg/hibernate/engine/FilterDefinition;
解决办法 原先:<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annota ...