我在CRM 2016中有一个插件代码C#。 我希望在插件结束时激活Javascript代码。 我尝试通过此插件更新字段,当此字段更改时,使用javaScript代码触发更改事件。 我看到,该字段发生了变化,但它不会激活更改字段时发生的功能。 但是当手动而不是通过插件更改此字段时,该功能可以正常工作。
也许有一个想法知道插件何时结束?
答案 0 :(得分:1)
如果从表单上的保存调用插件并同步注册,则可以在保存时返回运行脚本。您需要使用异步保存方法:double*
这与旧的Xrm.Page.data.save().then(_success, fail);
操作不同,后者是同步的,无法捕获返回。
如果您需要在每次保存时启动此插件,请捕获OnSave事件,取消默认操作并使用此异步保存方法。这是一个讨论取消默认保存操作的页面:https://neilparkhurst.com/2015/11/11/javascript-prevent-save/
您可以使用它来创建这个" resumable"保存操作。在Xrm.Page.data.entity.save(saveType)
成功方法中,您可以获取插件更改的属性并调用then()
方法。
以下是此新操作的XRM文档: https://msdn.microsoft.com/en-us/library/dn481607.aspx?f=255&MSPPError=-2147217396
答案 1 :(得分:1)
这是一个单独的答案,因为它是针对不同情况的解决方案。你会做这个或我的其他答案,但可能不是两个,我不想把它们放在一个答案中来混淆。
如果这个“插件”是偶然的,因为它只是偶尔发生,而不是每次保存,它可能是使用Actions的好时机。在操作之前,我们经常会有“控制字段” - 没有任何数据值的实体上的字段,我们只是在保存时设置它们以使插件以特殊方式运行。如果是这种情况,我建议将代码重构为自定义活动(就像为工作流程创建自定义代码一样)并直接调用操作,而不是在保存的插件中。在这种情况下,您不需要“在保存后运行javascript”,因为您只是在调用操作并在此之后运行。
答案 2 :(得分:0)
完成Server端插件的执行后,我们无法在客户端执行一些Javascript功能代码块。
但是通过扩展你的方法,你正在更新插件中的虚拟字段,所以刷新表单以查看表单加载时的最新更改 - 触发该虚拟字段的onchange()方法应该很好地工作。