窗体事件(客户端引用)

 

发布日期: 2017年1月

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

事件启动的所有客户端代码。 在 Microsoft Dynamics 365 中,发生特定事件时,您将关联 JavaScript 库中要执行的一个特定函数。

所有窗体事件均具有用于指定一个或多个事件处理程序的用户界面。 每个事件处理程序指定 JavaScript 库内的单个函数和可以传递给函数的所有参数。

事件

OnLoad 事件

OnSave 事件

字段 OnChange 事件

选项卡 TabStateChange 事件

IFRAME OnReadyStateComplete 事件

查找控件 PreSearch 事件

OnProcessStatusChange 事件

OnStageChange 事件

OnStageSelected 事件

知识库搜索控件事件

只读子网格 OnLoad 事件

可编辑网格事件

OnLoad 事件

加载窗体后,会触发 OnLoad 事件。 它无法阻止加载窗口。 使用 OnLoad 事件应用关于窗体显示方式、设置字段属性和与其他页面元素交互的逻辑。

当 适用于平板电脑的 Microsoft Dynamics 365 客户端中断时,OnLoad 事件为发生的唯一的事件。

备注

当创建记录初次保存或任何后续保存后,更新的实体 窗体不会重新加载页面。 因此,只有在初次加载窗体时,才会发生 OnLoad 事件。

OnSave 事件

OnSave 事件会在下列情况下发生:

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

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

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

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

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

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

若要确定执行保存将单击的按钮,请使用 getSaveMode 方法。

通过使用事件参数对象中的 preventDefault 方法,您可以取消保存操作。 使用属于执行上下文组成部分的 getEventArgs 方法,可以访问 preventDefault 方法。 您必须配置窗体事件处理程序,以传递执行上下文。 有关详细信息,请参阅使用执行上下文和窗体事件管道

字段 OnChange 事件

当窗体字段中的数据更改且焦点丢失时,通常会发生 OnChange 事件。

备注

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

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

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

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

所有字段均支持 OnChange 事件。 OnChange 事件发生前后,验证字段中的数据。

备注

尽管 Status 字段支持 OnChange 事件,但是窗体中的字段是只读的,因此通过用户交互无法发生该事件。 通过使用字段的 fireOnChange 方法,其他脚本可以引发此事件。

选项卡 TabStateChange 事件

当用户交互引起选项卡 DisplayState 更改时,或当 setDisplayState 方法应用于代码时,将发生 TabStateChange 事件。 当您要更改选项卡内 IFRAME src 属性时,请使用此事件。

备注

此事件不支持 Dynamics 365 移动客户端(电话和平板电脑),因为无法展开或折叠选项卡。

在 Dynamics 365 移动客户端中,交互式服务中心内的选项卡不能展开或折叠,但是用户在交互式服务中心中从一个选项卡移到另一个选项卡时,将发生 TabStateChange 事件。

如果您设置 IFRAME.src 属性(在折叠选项卡内,IFRAME 的 OnLoad 事件中),则当展开选项卡时,此值将被覆盖。

IFRAME OnReadyStateComplete 事件

OnReadyStateComplete 事件指示在代码中已加载且可访问的 IFRAME 内容。 当引用脚本内的 IFRAME 控件时,请使用该事件。

备注

此事件不支持 适用于手机的 Dynamics 365 和交互式服务中心。

查找控件 PreSearch 事件

查找控件具有 PreSearch 事件,当控件启动对话来搜索记录时便会发生此事件。 对于此事件,没有要设置事件处理程序的 UI。 您必须使用查找控件的 addPreSearchremovePreSearch 方法添加或删除此事件的事件处理程序。

在查找控件向用户显示搜索结果以选择窗体前,根据当前数据窗体,使用此事件和其他 Lookup 控件方法和事件 以更改查找中显示的结果。

OnProcessStatusChange 事件

当流程实例的状态更改时会发生此事件。 使用 Xrm.Page.data.process.addOnProcessStatusChange 方法添加此事件的事件处理程序,并使用 Xrm.Page.data.process.removeOnProcessStatusChange 方法将其删除。详细信息:编写业务流程脚本

备注

适用于 Dynamics 365 的 2016 年 12 月更新(联机和本地) 中引入了此事件。

OnStageChange 事件

当业务流程控件的阶段更改时,将发生该事件。 当用户单击用户界面中的“下一阶段”或“移动到上一阶段”按钮时,或当开发人员使用 Xrm.Page.data.process.moveNextXrm.Page.data.process.movePrevious 方法时,将发生该事件。 对于此事件,使用处理程序中的代码将无法取消阶段更改。

执行上下文对象被传递到该事件的事件处理程序。 您可以使用 getEventArgs 函数检索具有以下方法的对象:

  • getDirection
    返回“next”或“previous”字符串,以显示阶段更改的方向。

  • getStage
    返回阶段对象。 除导航移动到新实体之外,返回的阶段表示目标阶段对象,即下一个活动阶段。 当导航移动到新实体时,该阶段为从其导航的阶段,即先前的活动阶段对象。详细信息:阶段方法

使用 Xrm.Page.data.process.addOnStageChange 方法添加此事件的事件处理程序,并使用 Xrm.Page.data.process.removeOnStageChange 方法将其删除。详细信息:编写业务流程脚本

OnStageSelected 事件

当选择业务流程控件的阶段时,将发生该事件。 对于此事件,使用处理程序中的代码将无法取消阶段选择。

执行上下文对象被传递到该事件的事件处理程序。 您可以使用 getEventArgs 函数检索具有以下方法的对象:

  • getStage
    返回表示选定阶段的阶段对象。详细信息:阶段方法

使用 Xrm.Page.data.process.addOnStageSelected 方法添加此事件的事件处理程序,并使用 Xrm.Page.data.process.removeOnStageSelected 方法将其删除。详细信息:编写业务流程脚本

知识库搜索控件事件

知识库搜索控件只能添加到启用了知识管理的组织的窗体。 在此控制包含两个事件(OnResultOpenedOnSelection),开发人员可以通过编程方式将事件处理程序分派到这两个事件。详细信息:知识库搜索控件(客户端引用)

只读子网格 OnLoad 事件

将事件处理程序附加到子网格的 OnLoad 事件。详细信息:编写子网格的脚本

可编辑网格事件

将事件处理程序附加到可编辑子网格事件。详细信息:可编辑网格对象和方法(客户端引用)

另请参阅

脚本即时引用的表单
为 Microsoft Dynamics 365 窗体编写代码
使用 Xrm.Page 对象模型
客户端编程引用
编写业务流程脚本

Microsoft Dynamics 365

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