快速创建记录后刷新字段值的基础记录
我有一个实体窗体(实体A),它包含一个子窗格来显示另一个实体(实体B)的链接记录,其中多个B记录链接到一条A记录。 实体B的记录通过点击子网格上的'+'图标链接到实体A,填写实体B的快速创建表单并保存。保存之后,新创建的记录B以记录A的形式显示在子网格中:全部按预期方式显示。快速创建记录后刷新字段值的基础记录
填写实体B的快速创建表单时,需要填写包含金额的字段。在保存之后,服务器端插件获取链接到实体A的特定记录的实体B的所有记录,计算其全部金额的总和并填充实体A的记录形式的字段中的总金额。这也适用如预期的那样,新计算的值存储在数据库中。问题是显示表单A上总金额的字段不会刷新。它会一直显示与载入表单时相同的数量,并且只会在整页刷新后才会更新。每当实体B的新记录链接时,值会更新。 A上的值仅在页面刷新时显示为'新'值。
问题是用户连接超过B的10+条记录,无需刷新。我们获得了自动刷新字段的请求,但我不知道这是否可以完成,因此:是否可以在保存时以实体A的形式刷新(/重新呈现)字段实体B的事件?我认为这必须在JavaScript中完成,因为它是字段值的客户端表示,并且字段值已经正确存储在数据库中。
谢谢!
如果有帮助。它可以在C#中完成。你可以使用你在这里描述的逻辑来制作插件。
该插件将使用Plugin Registration Tool进行注册。您将不得不为Entity B添加两个步骤。首先会有Create消息,第二个Update。对于第二步,您只需选择amount
提交的更新,因此只有在更新该字段时才会触发它。
它也可以使用Rollup Fields来完成。他们可以点击更新,但每12小时都会自动更新,如果这对您来说足够频繁。
我不知道如何使用JavaScript,但我是CRM新手,所以其他人可能会出现这种类型的解决方案,我也很乐意阅读它。
使用JavaScript,可以订阅一个网格刷新事件。从那里你有几个选项。
- 在刷新事件中,您可以触发休息调用以从服务器检索值,然后更新表单上的值。我也会禁用该字段的提交,因为您不希望客户端更新它。
- Or-明确呼叫保存。您必须确保表单有效,或者将所有必填字段更改为不再需要以允许保存发生。保存事件将从数据库中返回更新的值并自动更新表单。
如果你以前从未做过休息电话,第一个选项可能会更难,但恕我直言,这是更好的选择。
我能想到的最简单的解决方案是通过为实体A的表单OnLoad
事件添加新的处理程序来轮询值。
然后代码将使用setTimeout
不断从REST API读取字段的值,比较字段的内容,如果更改它将调用Xrm.Page.data.refresh
异步地重新加载表单,而无需整页重新加载。
另一个(恕我直言更好)选项:升级到更新的版本。从2015年更新1开始,子网格也有OnLoad
事件:您只需要处理该事件,即可调用Xrm.Page.data.refresh
,而无需重复ping服务器。