定义功能区启用规则

 

发布日期: 2016年11月

适用于: Dynamics CRM 2015

在配置功能区元素时,您可以定义用于控制何时启用功能区元素的特定规则。<EnableRule> (RibbonDiffXml) 元素的使用方式如下所示:

  • 使用 /RuleDefinitions/EnableRules/EnableRule 元素定义控制应何时启用功能区元素的规则。

  • 使用 /CommandDefinitions/CommandDefinition/EnableRules/EnableRule 元素将特定启用规则与命令定义相关联。

启用是什么意思?

在命令栏中,未启用的命令会被隐藏。 在功能区,未启用的命令是可见的,但不会响应事件。

控制何时启用功能区元素

启用规则可以重复使用。 通过使用规则定义来定义启用规则,您可以针对多个命令定义使用相同的启用规则。 如果针对某个命令定义而定义了多个启用规则,那么对于要启用的功能区元素,所有启用规则的值都必须为 true。

所有启用规则都会提供一个用于指定规则的默认值是 true 还是 false 的可选属性,以及在所测试的项目返回 true 时允许返回负数结果的可选 InvertResult 属性。

/RuleDefinitions/EnableRules/EnableRule 元素支持以下类型的规则:

  • <CommandClientTypeRule> (RibbonDiffXml)
    指定用于检测使用中的演示类型的规则。

    Type 值对应于以下内容:

    演示文稿

    Modern

    使用 适用于平板电脑的 Microsoft Dynamics CRM 展示命令栏。

    Refresh

    使用更新的用户界面展示命令栏。

    Legacy

    功能区在未更新实体的窗体中展示,或在 Microsoft Dynamics CRM for Outlook 中的列表视图中展示。

  • <CrmClientTypeRule> (RibbonDiffXml)
    允许根据所使用的客户端类型定义规则。 类型选项如下:

    • Web

    • Outlook

  • <CrmOfflineAccessStateRule> (RibbonDiffXml)
    使用此条件根据 Microsoft Dynamics CRM for Microsoft Office Outlook with Offline Access 当前是否脱机启用功能区元素。

  • <CrmOutlookClientTypeRule> (RibbonDiffXml)
    使用此规则仅针对特定类型的 Microsoft Dynamics CRM for Outlook 显示按钮。 类型选项如下:

    • CrmForOutlook

    • CrmForOutlookOfflineAccess

  • <CustomRule> (RibbonDiffXml)
    使用此规则调用 JavaScript 库中返回布尔值的函数。

    备注

    不能迅速返回值的自定义规则可能会影响功能区的性能。 如果您必须执行可能需要一些时间才能完成的逻辑,请使用以下策略让您的自定义规则处于异步状态:

    1. 定义用于检查自定义对象的规则。 您可能会检查某个对象,如刚附加到窗口的 Window.ContosoCustomObject.RuleIsTrue。

    2. 如果该对象已存在,请将其返回。

    3. 如果该对象不存在,请定义对象并将值设置为 false。

    4. 在返回值之前,请使用 settimeout 执行异步回调函数以重置对象。 然后返回 false。

    5. 回调函数在执行完确定正确结果所需的操作之后,即会设置对象的值并使用 refreshRibbon 方法刷新功能区。

    6. 在刷新功能区之后,它便会检测对象以及准确的值集,并且对规则进行评估。

  • <EntityRule> (RibbonDiffXml)
    实体规则允许评估当前实体。 在定义应用于实体模板而非特定实体的自定义操作时,此功能非常有用。 例如,您可能想要将功能区元素添加到除几个特定实体以外的所有实体。 简单的做法就是,定义应用于所有实体的实体模板自定义操作,然后使用某个实体规则筛选掉那些应排除在外的实体。

    实体规则还包括用于指定实体是显示在窗体中还是列表中的可选上下文属性 (HomePageGrid)。 可选 AppliesTo 属性可以设置为 PrimaryEntitySelectedEntity,以便区分实体是否显示在子网格中。

  • <FormStateRule> (RibbonDiffXml)
    使用 FormState 规则可确定显示记录的窗体的当前类型。 状态选项如下:

    • Create

    • Existing

    • ReadOnly

    • Disabled

    • BulkEdit

  • <OrRule> (RibbonDiffXml)
    OrRule 使您可以替代针对多种启用规则类型的默认 AND 比较。 使用 OrRule 元素可定义几种可能的有效组合以进行检查。

  • <OutlookItemTrackingRule> (RibbonDiffXml)
    使用此元素的 TrackedInCrm 属性可确定是否在 Microsoft Dynamics 365 中跟踪记录。

  • <OutlookVersionRule> (RibbonDiffXml)
    使用此规则针对 Microsoft Office Outlook 的特定版本启用功能区元素,如下所示:

    • 2003

    • 2007

    • 2010

  • <PageRule> (RibbonDiffXml)
    此类型的规则可检查所显示页面的 URL。 如果 Address 匹配,它会返回 true。

  • <RecordPrivilegeRule> (RibbonDiffXml)
    使用此规则可确定当前用户是否具有特定记录的权限。 这些权限与实体权限有所不同,因为它们可以包括由另一位用户在与当前用户共享记录时获取的权限。

  • <SelectionCountRule> (RibbonDiffXml)
    将此规则与为列表显示的功能区结合使用,在选择网格中特定的最大记录数和最小记录数时启用按钮。 例如,如果您的按钮会合并记录,则应确保在启用功能区控件之前必须至少选择两条记录。

  • <SkuRule> (RibbonDiffXml)
    使用这种规则针对 Microsoft Dynamics 365 的特定 SKU 版本启用功能区元素,如下所示:

    • OnPremise

    • Online

    • Spla

  • <ValueRule> (RibbonDiffXml)
    使用此规则检查窗体中所显示记录的特定字段的值。 您必须指定 FieldValue 才能进行检查。

另请参阅

自定义命令和功能区
定义功能区命令
定义功能区显示规则

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