使用窗体和字段事件

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

您可以为 OnLoad 添加脚本,为窗体添加 OnSave 事件,以及为每个字段添加 OnChange 事件。 选项卡包含 TabStateChange 事件,而 IFRAME 包含 OnReadyStateComplete 事件。PreSearch 事件和业务流程控件所引发事件的处理程序,仅可以使用适用于各自控件的方法。

备注

已为批量编辑窗体禁用了窗体中的事件。 当编辑列表中的多条记录时,将显示批量编辑窗体。

本主题内容

OnLoad 事件

OnSave 事件

OnChange 事件

TabStateChange 事件

OnReadyStateComplete 事件

PreSearch 事件

业务流程控件事件

OnLoad 事件

加载窗体后,会触发 OnLoad 事件。 它无法阻止加载窗口。 使用 OnLoad 事件可以准备要在窗体中使用的数据。 可以使用 OnLoad 事件执行的操作包括:

  • 根据变化的值执行计算。

  • 提醒用户。

  • 禁用字段不应更新。

详细信息:OnLoad 事件

OnSave 事件

OnSave 事件并不对应于标准 HTML OnSubmit 事件。OnSave 事件会在下列情况下发生:

  • 即使在没有更改数据要保存的情况下,用户也要在表单的右下角单击 自动保存按钮 按钮。

  • 即使在没有更改数据要保存的情况下,代码也执行 Xrm.Page.data.entity.保存 方法。

  • 用户导航回窗体,而窗体中有尚未保存的数据。

  • 已启用自动保存功能,数据更改超过 30 秒,窗体中有未保存的数据。

  • 代码执行 Xrm.Page.data.保存 方法,且窗体中有未保存的数据。

  • 代码执行 Xrm.Page.data.刷新​​ 方法时将一个 true 值作为第一参数,窗体中有未保存的数据。

可以使用 getEventArgs 方法执行上下文中检索到的保存事件参数中的 getSaveMode 方法,来检测保存窗体时执行了何种操作。 当未更新实体的窗体中包含对应于“保存并关闭”行为时未保存的数据的情况下,导航回窗体时。

可以取消 OnSave 事件以阻止保存数据。 正是由于这个原因,经常使用 OnSave 事件验证数据。

详细信息:OnSave 事件

OnChange 事件

可在所有字段中使用 OnChange 事件。 一般情况下,OnChange 事件要求两个条件为 true:

  • 字段中的数据必须发生了更改。

  • 字段必须失去焦点。

备注

此行为有一个适用于被格式化以使用单选按钮或复选框的双选项(布尔值)字段的例外情况。 对于这些控件,事件会立即发生。

当刷新窗体时检索服务器的数据变动以更新字段时(例如,保存记录后),也将发生此事件。

使用 Xrm.Page.data.entity attribute.fireOnChange 方法也会引起此事件的发生。

如果该字段通过 setValue 方法以编程的方式发生改变,OnChange 事件就不会发生。 若要让 OnChange 事件的事件处理程序在设置值后运行,必须在代码中使用 fireOnChange 方法。

该事件发生后,将重新验证字段中的数据。 这意味着无法使用该事件输入无效数据。

可以使用 OnChange 执行的操作包括:

  • 根据变化的值执行计算以更改其他字段。

  • 更改字段的格式,例如,电话号码。

详细信息:字段 OnChange 事件

TabStateChange 事件

当展开或折叠选项卡时会发生此事件。 您可能要推迟代码的执行直至选项卡展开。

备注

此事件从来不会在 适用于平板电脑的 Microsoft Dynamics 365 中发生,因为该客户端的选项卡不会崩溃。

此事件在使用脚本修改 IFRAME 控件的 src 属性时非常重要。 IFRAME 将在选项卡展开时刷新。 将删除对 src 属性的任何更改。 如果与 IFRAME 的 src 属性交互,则应该始终在 TabStateChange 事件,而不是 Onload 事件中包含此代码。

详细信息:选项卡 TabStateChange 事件

OnReadyStateComplete 事件

除非 IFRAME 的内容已完全加载,否则与 IFRAME 交互的任何脚本都会失败。 一旦 IFRAME 内容完成加载,此事件便会提供包含要执行脚本的位置。

详细信息:IFRAME OnReadyStateComplete 事件

PreSearch 事件

使用 addPreSearch 方法添加事件处理程序到控件以查找属性。 没有可以手动添加事件处理程序的用户界面。 在 addCustomFilteraddCustomView, 和 setDefaultView 方法中使用此事件,以便在用户寻找作为查找字段的值的视图时控制开启的视图。

详细信息:查找控件 PreSearch 事件

业务流程控件事件

Microsoft Dynamics 365(在线或本地) 为用户提供了三个与流程业务控件交互的事件。

无注册这些事件脚本的 UI。 使用窗体 OnLoad 事件中所注册函数中的以下方法,为这些事件注册您的函数。

其中每个方法都接受一个函数作为参数,以在事件处理程序中对其进行添加或删除。详细信息:管理事件处理程序的方法

另请参阅

为 Microsoft Dynamics 365 窗体编写代码
使用 Xrm.Page 对象模型
脚本即时引用的表单
通过 Microsoft Dynamics 365 使用 JavaScript
客户端编程引用
窗体事件(客户端引用)
<events> (FormXml)

Microsoft Dynamics 365

© 2017 Microsoft。 保留所有权利。 版权