执行上下文(客户端引用)

 

发布日期: 2017年1月

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

执行上下文中是一个能够通过事件处理程序传递到 JavaScript 库函数的可选参数。 当您指定函数名称时,此选项出现在处理程序属性对话中。 这个是使用 passExecutionContext 属性对 <Handler> (FormXml) 元素进行设置的选项。

执行上下文会使用 Xrm.Page.data.fbaf2e7a-db2f-448f-bd24-6b3ca1ccb28e#BKMK_addOnSave、Xrm.Page.data.entityAttribute.6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_addOnChange 和 Xrm.Page.uiControl.51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_addPreSearch 方法自动传递到函数集。

执行上下文方法

  • getContext
    返回 客户端上下文(客户端引用) 对象的方法。

  • getDepth
    返回一个指示此处理程序的执行顺序的值的方法。

  • getEventArgs
    使用管理 Save 事件的方法返回对象的方法。

  • getEventSource
    返回对发生事件的对象的引用的方法。

  • getFormContext
    用于返回对窗体或可编辑网格的引用的方法取决于方法的调用位置。

  • 共享变量:
    共享变量允许与同一事件的其他处理程序共享变量。 您使用 setSharedVariable 和 getSharedVariable 方法处理共享变量。

getContext

返回 客户端上下文(客户端引用) 对象的方法

ExecutionContextObj.getContext()
  • 返回值
    类型: 对象

getDepth

返回一个指示此处理程序的执行顺序的值的方法。

  • 返回值
    类型: 数字

    订单从 0 开始。

getEventArgs

使用管理 Save 事件的方法返回对象的方法。

备注

Save 事件外,此方法将对其他所有事件返回 null

ExecutionContextObj.getEventArgs()

getEventSource

返回对发生事件的对象的引用的方法。

ExecutionContextObj.getEventSource()
  • 返回值
    类型: 对象

    此方法返回事件来源的 Xrm.Page 对象模型的对象,而不是 HTMLDOM 对象。 例如,在 OnChange 事件中,该方法会返回表示更改属性的 Xrm.Page.data.entity 属性对象。

getFormContext

用于返回对窗体 (Xrm.Page) 或可编辑网格的引用的方法取决于方法的调用位置。

ExecutionContextObj.getFormContext()
  • 返回值
    类型: 对象

    此方法根据其调用位置返回对 Xrm.Page 对象模型中的对象的引用或对可编辑网格中的 dabc9332-54f3-4b1e-ac98-a3c5a4641b0c#BKMK_GridRow 对象的引用。 可通过此方法创建通用事件句柄,用于根据方法的调用位置对窗体或可编辑网格执行操作。

    详细信息:使用 Xrm.Page 对象模型可编辑网格对象和方法(客户端引用)

    备注

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

  • 示例
    以下示例代码演示如何根据脚本的注册位置(d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_FieldOnChangeEvent 或可编辑网格 dabc9332-54f3-4b1e-ac98-a3c5a4641b0c#BKMK_OnChange)事件,创建用于在窗体字段或可编辑网格单元格中设置通知的方法:

    function commonEventHandler(executionContext) {
        var entityObject = executionContext.getFormContext().data.entity;
        var telephoneAttr = entityObject.attributes.getByName('telephone1');
        var isNumberWithCountryCode = telephoneAttr.getValue().substring(0,1) === '+';
    
        // telephoneField will be an Xrm.Page control if invoked from a form OnChange event;
        // telephoneField will be a editable grid GridCell object if invoked from editable grid OnChange event.
        var telephoneField = telephoneAttr.controls.getByIndex(0);
    
        if (!isNumberWithCountryCode) {
            telephoneField.setNotification('Please include the country code beginning with ‘+’.', 'countryCodeNotification');
        }
        else {
            telephoneField.clearNotification('countryCodeNotification');
        }
    }
    

共享变量:

共享变量允许与同一事件的其他处理程序共享变量。 使用 setSharedVariable 和 getSharedVariable 方法可在函数之间传递变量。

setSharedVariable

在当前处理程序完成后,设置可由处理程序使用的变量值。

ExecutionContextObj.setSharedVariable(key, value)
  • 参数
    String:变量的名称

    Object:要设置的值。

getSharedVariable

检索使用 setSharedVariable 的变量集。

ExecutionContextObj.getSharedVariable(key)
  • 参数
    String:变量的名称。

  • 返回值
    类型: 对象

    特定类型取决于对象的值。

另请参阅

客户端编程引用

Microsoft Dynamics 365

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