客户端 API 窗体上下文(formContext)提供对窗体或窗体上的项的引用,例如快速视图控件或可编辑网格中的行,而当前代码将对其执行。
之前,你使用了全局 Xrm.Page 对象来表示窗体或窗体上的项。 在 最新版本中, Xrm.Page 对象已 弃用。 请改用传入执行上下文对象的 getFormContext 方法返回对相应窗体或窗体上的项的引用。
重要
弃用 意味着Microsoft打算从模型驱动应用的未来主要版本中删除功能或功能。 特性或功能在该版本正式删除前继续有效并完全受支持。 Microsoft 会在移除功能前至少六个月通过文档、官方博客以及其他多种渠道发布公告。
为了保持与现有脚本的向后兼容性,仍支持将 Xrm.Page 对象用作对主窗体上下文的静态访问,并且不会在客户端 API 弃用部分中列出的其他一些客户端 API 方法后立即删除。 尽可能在面向版本 9.0 或更高版本的代码中使用新的 formContext 对象,而不是 Xrm.Page 对象。 此外,通过使用 formContext 对象,可以创建可在窗体或可编辑网格中操作的常见事件处理程序,具体取决于调用它的位置。 有关详细信息,请参阅 getFormContext (客户端 API 参考)。
获取用于功能区操作的 JavaScript 函数的 formContext 对象与在表单脚本中获取它的方式不同。 有关详细信息,请参阅 功能区操作中的窗体和网格上下文。
注释
表单上下文仅在它们被传递的事件期间有效。 相同的限制适用于执行上下文。
使用 formContext 对象而不是 Xrm.Page 对象
可以轻松地转换使用 Xrm.Page 来使用新 formContext 对象的现有代码。 例如,请考虑使用以下使用 Xrm.Page 对象的脚本:
function displayName()
{
var firstName = Xrm.Page.getAttribute("firstname").getValue();
var lastName = Xrm.Page.getAttribute("lastname").getValue();
console.log(firstName + " " + lastName);
}
下面是使用传入的执行上下文检索 formContext 对象的更新脚本,而不是使用静态 Xrm.Page 对象:
function displayName(executionContext)
{
var formContext = executionContext.getFormContext(); // get formContext
// use formContext instead of Xrm.Page
var firstName = formContext.getAttribute("firstname").getValue();
var lastName = formContext.getAttribute("lastname").getValue();
console.log(firstName + " " + lastName);
}
重要
在定义事件处理程序以使用 formContext 对象时,在“处理程序属性”对话框中选择“传递执行上下文”作为第一个参数选项。 有关详细信息,请参阅 客户端 API 执行上下文。
formContext 对象模型
使用 formContext 对象下的 data 和 ui 对象以编程方式操作模型驱动应用程序中的数据和用户界面元素。
数据对象
提供用于处理表单数据的属性和方法,包括表格数据和业务流程控制中的数据。 包含以下对象:
| 对象 | 说明 |
|---|---|
attributes |
表单上的非表数据集合。 此集合中的项与列集合的类型相同,但它们不是窗体表的列。 详细信息: 集合 |
entity |
提供用于检索页面上显示的记录的特定信息、保存方法以及表单上包含的所有列的集合的方法。 列数据仅限于那些在表单上显示的列。 详细信息: formContext.data.entity |
process |
提供对象和方法,用于与表单上的业务流程数据进行交互。 详细信息: formContext.data.process |
它还提供了一个属性集合,以访问不依赖表的控件。 请参阅本文后面的 formContext 对象模型部分中的 Collections 。
详细信息: formContext.data
ui 对象
除了表单或网格的多个子组件集合外,还提供检索有关用户界面的信息的方法。 包含以下对象:
| 对象 | 说明 |
|---|---|
formSelector |
提供可用于查询当前用户可用的表单的项集合。
navigate使用该方法关闭当前窗体并打开另一个窗体。 |
navigation |
不包含任何方法。 通过项集合提供对导航项的访问权限。 有关集合部分的详细信息,请参阅下一节。 |
process |
提供用于与表单上的业务流控件交互的方法。 |
详细信息: formContext.ui
formContext 对象模型中的集合
下表介绍了 Xrm 对象模型中的集合。 有关一般集合可用的方法的信息,请参阅集合(客户端 API 参考)。
| Collection | 说明 |
|---|---|
| attributes | 两个对象包含列集合: - formContext.data.attributes 集合提供对非表绑定列的访问。 - formContext.data.entity.attributes 集合提供对窗体上可用的每个表列的访问权限。 只有添加到窗体的列才可用。 |
| 控制 | 三个对象包含控件集合: - formContext.ui.controls:提供对窗体上存在的每个控件的访问权限。 - formContext.data.entity.attribute.controls:由于窗体上的列可能有多个控件,因此此集合提供对每个控件的访问权限。 除非向表单添加了该列的多个控件,否则此集合仅包含一个项目。 - formContext.ui.tabs.sections.controls:此集合仅包含节中找到的控件。 |
| formContext.data.process.stages 和 formContext.data.process.steps | 提供对业务流程中的阶段和步骤集合的访问权限。 这些项还允许从集合中添加和删除项。 |
| formContext.ui.formSelector项目 | 当为一个表提供多个窗体时,可以将每个窗体与安全角色相关联。 当用户关联的安全角色允许他们查看多个窗体时, formContext.ui.formSelector.items 集合提供对该用户可用的每个表单定义的访问权限。 |
| formContext.ui.navigation.items | formContext.ui.navigation.items 集合提供对使用窗体编辑器导航区域定义的导航项的访问。 用户通过使用命令栏导航到这些项。 |
| formContext.ui。quickForms | 提供用于访问表单上所有快速查看控件及其组成控件的方法。 |
| formContext.ui。标签 | 可以使用一个或多个选项卡来对每个表单进行组织。 此集合提供对这些选项卡中的每个选项卡的访问权限。 |
| formContext.ui Tab.sections | 可以使用一个或多个节来组织每个窗体选项卡。 选项卡 节 集合提供对这些部分中的每个部分的访问权限。 需要定义包含所需分区的选项卡,或循环访问每个选项卡来查找相关部分。 |
相关文章
getFormContext 方法
getGlobalContext 方法
getAttribute 方法
getControl 方法
执行上下文方法