Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过CRM SDK配置实体更改时视图/表单/仪表板的自动更新_C#_Sdk_Dynamics Crm_Crm_Dynamics Crm 2013 - Fatal编程技术网

C# 如何通过CRM SDK配置实体更改时视图/表单/仪表板的自动更新

C# 如何通过CRM SDK配置实体更改时视图/表单/仪表板的自动更新,c#,sdk,dynamics-crm,crm,dynamics-crm-2013,C#,Sdk,Dynamics Crm,Crm,Dynamics Crm 2013,目前,我们有以下情况: 账户实体包含在线_状态字段,该字段可以有离线或在线值。我们有一个实体视图,它只显示在线帐户 案例1: 我打开视野。它现在是空的 我在另一个窗口中打开账户表单,并手动将联机状态从脱机更改为联机 单击保存后,视图中的网格将自动更新并开始显示此帐户 案例2: 我使用SDK更改联机状态: using (var proxy = CreateCrmProxy(broker)) { proxy.EnableProxyTypes(); var crmAccount =

目前,我们有以下情况:
账户
实体包含
在线_状态
字段,该字段可以有
离线
在线
值。我们有一个实体视图,它只显示在线帐户

案例1:
  • 我打开视野。它现在是空的
  • 我在另一个窗口中打开账户表单,并手动将联机状态从
    脱机
    更改为
    联机
  • 单击保存后,视图中的网格将自动更新并开始显示此帐户
案例2: 我使用SDK更改联机状态:

using (var proxy = CreateCrmProxy(broker))
{
    proxy.EnableProxyTypes();
    var crmAccount = proxy.Retrieve(Account.EntityLogicalName, aggregateId, new ColumnSet()) as Account; 

    crmAccount.OnlineStatus = //new online status;
    proxy.Update(crmAccount);
}
CreateCrmProxy
方法创建
OrganizationServiceProxy
类的实例

在这种情况下,
online\u status
字段成功更新,但视图中的网格仍处于旧状态,我需要按“刷新”按钮以查看有效信息

是否可以使用案例2中的技术启动视图自动更新


提前谢谢

不,你不能用插件来实现这一点,因为插件是纯后端的,子网格是前端UI结构。在进行更新后,您可能会通过调用RetrieveMultiple来进行一些黑客行为,但是没有任何方法强制视图进行自我更新


在您的环境中,更好的选择是通过javascript触发更改(REST或SOAP调用就足够了),这样一旦更新完成,就可以调用control.refresh。在仪表板上,它会变得有点棘手,因为您没有一个表单来加载javascript,并且视图将位于不同的窗格中,但是您可以使用web资源和父上下文来做一些事情

但当我在CRM页面中更新联机状态时,CRM子网格将被刷新。这是怎么发生的?据我所知,CRM中的一些事件被触发,子网格订阅了这些事件。还是有其他机制?我不能使用它吗?当您更新CRM页面上的记录(来自子网格)时发生的CRM“事件”是调用页面端javascript函数来重新加载网格。重新加载网格不会重新调用RetrieveMultiple消息。有一些crm服务器端事件可以注册插件,但同样,子网格并没有以您描述的方式连接到这些事件。它们使用RetrieveMultiple SDK操作来获取所有相关记录,但无法将此retrieve multiple操作推送到子网格。