我有一个实体表单(实体A),它包含一个子网格,用于显示另一个实体(实体B)的链接记录,其中多个B记录链接到一个A记录。 通过单击子网格上的“+”图标,实体B的记录链接到实体A,为实体B填写快速创建表单并保存。保存之后,新创建的记录B显示在记录A:所有预期形式的子网格中。
在填写实体B的快速创建表单时,需要填写包含金额的字段。保存后,服务器端插件获取链接到实体A的特定记录的实体B的所有记录,计算其所有金额的总和并填写实体A的记录形式的字段中的总金额。这也有效如预期的那样,新计算的值存储在数据库中。问题是在表单A上显示总金额的字段不会刷新。它继续显示与加载表单时相同的数量,并且仅在整页刷新后更新。每当实体B的新记录被链接时,该值就会更新。 A上的值仅在刷新页面时显示为“新”值。
问题是用户连续连接了10条B的记录,而没有刷新。我们得到了自动刷新字段的请求,但是我不知道是否可以这样做,所以:是否可以在on节点上刷新(/重新渲染)实体A形式的字段实体B的事件?我认为这必须在javascript中完成,因为它是字段值的客户端表示,并且字段值已经正确地存储在数据库中。
谢谢!
答案 0 :(得分:0)
如果有帮助。它可以在C#中完成。您可以使用此处描述的逻辑制作插件。
该插件将使用Plugin Registration Tool注册。您必须为实体B添加两个步骤。第一个将具有创建消息,第二个将具有更新。对于第二步,您只需选择amount
字段更新,因此只有在更新该字段时才会触发更新。
也可以使用Rollup Fields完成。它们可以在点击时更新,但如果频繁到您,则每12小时也会自动更新。
我不知道如何使用JavaScript,但我是CRM的新手,所以其他人可能会出现这种类型的解决方案,我也很乐意阅读它。
答案 1 :(得分:0)
使用JavaScript,您可以订阅网格刷新事件。从那里你有几个选择。
如果你以前从未打过休息电话,第一个选项可能更难,但恕我直言,这是更好的选择。
答案 2 :(得分:0)
我能想到的最简单的解决方案是通过向实体A的表单OnLoad
事件添加新的处理程序来轮询该值。
setTimeout
不断从REST API中读取字段的值,比较字段的内容,如果它被更改,它将调用Xrm.Page.data.refresh
以异步方式重新加载表单没有整页重新加载。
另一个(恕我直言更好)选项:升级到更新版本。从2015 Update 1开始,子网格也有OnLoad
个事件:你只需要处理它,调用Xrm.Page.data.refresh
而不必反复ping服务器。