如何通过 CRM SDK 在实体更改时配置 view/form/dashboard 的自动更新
How to configure auto update of view/form/dashboard on entity change via CRM SDK
目前我们有以下情况:
Account
实体包含 online_status
字段,该字段可以具有 offline
或 online
值。我们有一个实体视图,它只显示在线帐户。
案例 1:
- 我打开视图。现在是空的;
- 我在另一个 window 中开设了一个帐户表格,并手动将在线状态从
offline
更改为 online
;
- 点击
save
后,视图中的网格自动更新并开始显示此帐户
案例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
class.
的实例
在这种情况下,online_status
字段更新成功,但视图中的网格仍处于旧状态,我需要按“刷新”按钮才能看到有效信息。
是否可以使用案例 2 中的技术触发视图自动更新?
提前致谢!
不,您不能使用插件来做到这一点,因为插件纯粹是后端,而子网格是前端 UI 构造。在进行更新后,您可能会通过调用 RetrieveMultiple 来做一些骇人听闻的事情,但是没有任何方法可以强制视图自行更新。
根据您的情况,更好的选择是通过 javascript 触发更改(REST 或 SOAP 调用就足够了),这样一旦更新完成,您就可以调用 control.refresh.它在仪表板上会变得有点棘手,因为您没有用于加载 javascript 的表单,并且视图将位于不同的窗格中,但是您可以使用 Web 资源做一些事情并使用父上下文.
目前我们有以下情况:
Account
实体包含 online_status
字段,该字段可以具有 offline
或 online
值。我们有一个实体视图,它只显示在线帐户。
案例 1:
- 我打开视图。现在是空的;
- 我在另一个 window 中开设了一个帐户表格,并手动将在线状态从
offline
更改为online
; - 点击
save
后,视图中的网格自动更新并开始显示此帐户
案例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
class.
在这种情况下,online_status
字段更新成功,但视图中的网格仍处于旧状态,我需要按“刷新”按钮才能看到有效信息。
是否可以使用案例 2 中的技术触发视图自动更新?
提前致谢!
不,您不能使用插件来做到这一点,因为插件纯粹是后端,而子网格是前端 UI 构造。在进行更新后,您可能会通过调用 RetrieveMultiple 来做一些骇人听闻的事情,但是没有任何方法可以强制视图自行更新。
根据您的情况,更好的选择是通过 javascript 触发更改(REST 或 SOAP 调用就足够了),这样一旦更新完成,您就可以调用 control.refresh.它在仪表板上会变得有点棘手,因为您没有用于加载 javascript 的表单,并且视图将位于不同的窗格中,但是您可以使用 Web 资源做一些事情并使用父上下文.