表单保存完成后检测已更改的属性

时间:2014-11-26 18:18:17

标签: dynamics-crm-2013

最终我要找的是onSaveComplete事件。

问题是我们有插件在保存时修改实体数据。对于大多数属性,这很好,因为保存完成后,表单上的数据会更新。客户端脚本是有问题的,因为(据我所知)没有事件表明在保存实体时插件更新了值。

我提出的最佳解决方案是挂钩onSave事件,阻止默认保存操作,并改为使用data.save()

function onSave(context) {
    var args = context.getEventArgs();
    args.preventDefault();

    Xrm.Page.data.save().then(function() {
        //check for changed attributes here
    });
}

(实际代码有点复杂,以防止递归等,但你明白了)

最终这种方法最终变得非常混乱,我应用它的形式越多,感觉就越真实。所以我的问题是 - 有更好,更标准的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我通过另一种" hack"完成了类似于后保存JS事件的事情。

以下是它的工作原理:

  • ModifiedOn字段放在表单
  • 订阅ModifiedOn' s OnChange活动

每次保存表单时,您附加到OnChange的事件都会触发(因为数据发生变化时ModifiedOn也是如此)。

很可能ModifiedOn应该在表单上设置为只读,以避免冲突脚本。