zoukankan      html  css  js  c++  java
  • 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", "*"),一旦存在就抛错不创建了。


  • 相关阅读:
    .NET 请求和接收FormData的值
    span可编辑 属性 html 可编辑td 文字不可 选中
    mvc关于pots请求 哪个函数 出现bug研究
    C#的split函数分割
    HBase入门
    Labview学习之波形图表的历史数据
    VC++学习之GDI概述
    如何撰写项目计划书
    VC++学习之VC中常见问题
    Labview学习之程序Web发布
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7230309.html
Copyright © 2011-2022 走看看