【发布时间】:2020-05-20 08:16:06
【问题描述】:
在 Dynamics 365 9.0 中,关于如何访问表单属性和控件发生了相当大的变化 - 我们应该将 executionContext 传递给函数,而不是 Xrm.Page 命名空间,并使用 getFormContext() 函数获取 formContext。这工作正常,我在使用这种方法时从来没有遇到过问题。
但是我还没有弄清楚如何在从功能区调用的函数中正确访问formContext。文档说这应该非常简单:
function myFunction(executionContext) {
var formContext = executionContext.getFormContext();
var focusFieldValue = formContext.ui.controls.get(PrimaryControlId).getAttribute().getValue();
}
但它没有说明如何将executionContext 传递给 Ribbon 函数。在普通函数中有一个复选框“将执行上下文作为第一个参数传递”,但是 Ribbon 函数呢?我们可以将一些参数传递给这些函数,但它们只是所选记录的 GUID,或所选记录的类型,甚至是对象列表,但如果有等于 executionContext 的参数,我在文档中找不到。有人已经解决了这个问题吗?
我也知道我可以使用 Xrm.Page 并且它会工作(至少现在......)但我想知道,如何使用 9.0 版中的最新指南来完成它
更新 1:
根据 Scott 的建议和 this article,我将 PrimaryControl 传递给我的 Ribbon 命令,但不幸的是,参数类型为 Mscrm.FormControlLite,并且它没有 getAttribute 函数或任何允许访问 formContext 的函数(在至少我没有看到任何有用的东西)。开发者工具的一些截图:
所以它看起来像某种形式的表示形式,但可能与 formContext 无关(我假设如果从记录列表中调用功能区,则该项目可以是网格类型或类似的类型)
【问题讨论】:
标签: dynamics-crm dynamics-crm-online dynamics-crm-365-v9