摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复270或者20180424可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me 。
Dynamics CRM 2016开始推出推荐使用Web API,我也有系列博客文章做了介绍,主要文章如下:
- Dynamics CRM 2015/2016新特性之二十:Web API介绍及使用它创建记录
- Dynamics CRM 2015/2016新特性之二十二:使用Web API更新和删除记录
- Dynamics CRM 2015/2016新特性之二十三:使用Web API执行函数
- Dynamics CRM 2015/2016新特性之二十四:使用Web API执行操作
- Dynamics CRM 2015/2016新特性之二十五:使用Web API代理其他用户操作
- Dynamics CRM 2015/2016新特性之二十六:使用Web API执行乐观并发操作
- Dynamics CRM 2015/2016新特性之二十七:使用Web API查询元数据
不过如何通过Web API来将查找字段的值设置为空值?我们知道在表单编程和使用组织服务的时候是将字段值设置为NULL就可以,Web API也可以这样吗?答案是不可以。
方法可以参考微软的文档:Associate and disassociate entities using the Web API,我这里不多说,直接用例子来演示。
我想设置【罗勇测试】实体架构名称为【ly_Lookup】(类型为查找字段)的值为空,可以看到设置前这个字段有值:
我使用如下代码来设置查找字段的值为空,有两个值得注意的地方:一是HTTP的方法为DELETE,二是字段的名称使用架构名称:
var clientURL = Xrm.Page.context.getClientUrl();
var req = new XMLHttpRequest()
req.open("DELETE", encodeURI(clientURL + "/api/data/v8.2/ly_tests(B907DE1B-CF99-E611-8161-000D3A80C8B8)/ly_Lookup/$ref"), true);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.onreadystatechange = function () {
if (this.readyState == 4 /* complete */) {
req.onreadystatechange = null;
if (this.status == 204) {
alert("记录删除成功!");
}
else if (this.status == 404) {
alert("要删除的记录不存在!")
}
else {
var error = JSON.parse(this.response).error;
alert("删除罗勇测试实体记录的查找字段值失败." + error.message);
}
}
};
req.send();
执行后就可以看到查找字段的值为空了。