使用Sdk.Sync.Update将选项列表值更新为null不执行任何操作

时间:2017-06-15 15:54:07

标签: dynamics-crm dynamics-crm-2015

是否可以使用Sdk.Sync.Update更新null的选项列表类型的记录属性?它不适合我。

这就是我的所作所为:

var detailsObj = updatedDetailsObj; // I get updatedDetailsObj from previous logic, not shown here
var operation = new Sdk.Entity("kcl_operation");
operation.setId(operationId, false); // I have operationId from previous logic, not shown here 
operation.addAttribute(new Sdk.String("op_updatedAccount", detailsObj.UpdatedAccount)); // works, get updated
operation.addAttribute(new Sdk.OptionSet("op_updatedExplanation", null)); // doesn't get updated
Sdk.Sync.update(operation);

完成Sdk.Sync.update后,字符串字段会更新,但是选项列表字段会保留其先前的值,而不是null。 我还看了一下在Sdk.Sync.update中发送的XML,实际上,它缺少"op_updatedExplanation"null对。

如何使其有效?

加了: 我没有在表单中但在网格页面内执行此操作,因此用户检查多个记录,我需要对所有记录进行更新。

2 个答案:

答案 0 :(得分:0)

标准CRM SDK代码(假设实体名称和字段名称):

Entity operation = new Entity("kcl_operation");
operation.Id = operationId;
operation["op_updatedexplanation"] = null;
service.Update(operation);

其中service是IOrganizationService实例

答案 1 :(得分:0)

请使用此代码段将值设置为null。

Xrm.Page.getAttribute("op_updatedexplanation").setValue(null);

这只会在表单中设置值。您可能必须保存表单才能看到存储在数据库中的值。

Xrm.Page.data.entity.save();

如果禁用该控件 - 您还必须设置submitmode属性。

Xrm.Page.getAttribute("op_updatedexplanation").setSubmitMode("always");