Dynamics CRM2016 Web API之更新记录
2016-03-17 13:31
537 查看
本篇继续探索web api,介绍如何通过web api更新记录。
下面是一段简单的更新代码,更新了几个不同类型的字段,entity的赋值和前篇创建时候的一样的。
新的更新操作的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",
"*"),一旦存在就抛错不创建了。
下面是一段简单的更新代码,更新了几个不同类型的字段,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",
"*"),一旦存在就抛错不创建了。
相关文章推荐
- poj2823Sliding Window【线段树维护滚动区间最值】
- go语言select关注点
- Dynamics CRM2016 Web API之更新记录
- Dynamics CRM2016 Web API之更新记录
- Dynamics CRM2016 Web API之更新记录
- 常用书籍--经典
- EL表达式fn:endsWith函数的bug
- 欢迎使用CSDN-markdown编辑器
- EF 配置MySQL
- T440安装Win7系统
- 超链接跳转嵌套完成iframe框架 页面双头双尾解决办法
- LeetCode: Add Two Numbers
- iOS 玩转推送通知
- freemarker+ITextRenderer 生成html转pdf
- Visual Studio 2013 无法正常打开项目文件
- 数学之路-分布式计算-disco(4)
- 我的第一个安卓小实验
- pthread_cleanup_push()/pthread_cleanup_pop()的详解
- Java 序列化
- 【字符串】勤奋的计算机系学生(栈)