Dynamics crm 仅当我在dynamics crm中更新浏览器时,字段才会更新

Dynamics crm 仅当我在dynamics crm中更新浏览器时,字段才会更新,dynamics-crm,dynamics-crm-2013,Dynamics Crm,Dynamics Crm 2013,我为CRM编写了插件。创建新的实体B时,它会更新实体A的字段。 我有一个用于实体a的表单,在这个表单中,我有一个用于实体B的选项卡。当我从此选项卡创建新的实体B时,我的插件更改字段位于实体A中。但在重新加载浏览器页面之前,我看不到这一变化 您不知何故忽略了一个事实,即您的插件正在服务器上运行,它会更新另一台服务器上数据库中的数据。没有让数据库更新触发特定客户端(或所有客户端)上的通知的内置方法。因此,您有两种选择: 在执行实体B的保存后,在实体a的上下文中触发Xrm.Page.data.re

我为CRM编写了插件。创建新的
实体B
时,它会更新
实体A
的字段。 我有一个用于
实体a
的表单,在这个表单中,我有一个用于
实体B
的选项卡。当我从此选项卡创建新的
实体B
时,我的插件更改字段位于
实体A
中。但在重新加载浏览器页面之前,我看不到这一变化


您不知何故忽略了一个事实,即您的插件正在服务器上运行,它会更新另一台服务器上数据库中的数据。没有让数据库更新触发特定客户端(或所有客户端)上的通知的内置方法。因此,您有两种选择:

  • 在执行
    实体B
    的保存后,在
    实体a
    的上下文中触发Xrm.Page.data.refresh(或者保存也可以,因为这将下拉新值)
  • 使用轮询和CrmWebApi或odata端点来查询CRM,以便在服务器端更新该值,然后在客户端更新该值

  • 您的问题有点难理解,但如果您无法在
    实体a
    的上下文中知道用户应该创建了
    实体B
    ,则#1可能会很难理解#2可以工作,但如果有数百个用户坐在那里进行轮询,则无法很好地扩展。

    这是预期的行为-除非您告诉页面,否则页面不会强制自己重新加载(调用Xrm.page.data.refresh()。即使您确实刷新了它,在刷新页面时(如果插件是异步注册的),该值也可能尚未更新。我应该使用什么事件调用Xrm.page.data.refresh()?我的插件是Synchronous。很好的问题-插件是实时服务器端的,您需要调用客户端事件。您可以尝试通过F12查找grid.refresh(用于事件响应)并覆盖它以刷新整个页面,而不仅仅是网格。也许您可以将onrefresh事件添加到子网格(其中+在上面)。在回调中,您可以像Joseph描述的那样刷新当前表单。见本文: