如何使用自定义逻辑以类似网格视图的方式在CRM 2011中以受支持的方式有条件地显示功能区组?

时间:2012-02-10 19:42:49

标签: dynamics-crm-2011

我已修改CRM 2011解决方案的站点地图以包含新区域。该区域包含一个组,该组包含一个SubArea。

SubArea的URL属性与此类似......

<SubArea Id="x" Url="/WebResources/new_/y.html"
            <Titles>
              <Title Title="z" LCID="1033" />
            </Titles>
</SubArea>

当用户点击导航栏中的此子区域时,y.html webresource会按预期加载到CRM的内容区域。它的加载方式与网格视图的加载方式类似,但不是网格视图,而是加载y.html。

此外,还会加载自定义功能区。

目前,此自定义功能区会根据当前用户的角色禁用功能区按钮组。这是使用RibbonDiffXml中CommandDefinition的EnableRule完成的。在EnableRule中,定义了一个CustomRule,它引用了一个javascript函数,该函数根据有关用户角色的一些自定义逻辑返回true或false。

这很好用。但是,我被要求删除功能区按钮组而不是隐藏它们。

我的理解是,对于DisplayRule而言,这比启用规则更重要。但是,from what I gather DisplayRule没有CustomRule选项EnableRule does

在收集到DisplayRule不是一个选项后,我认为我可以在启用规则中编写一些javascript以删除该组(以及返回一个值以启用它或不启用它)。但是,在调试javascript之后,我看到虽然我可以访问Xrm.Page,但我无法访问Xrm.Page.ui(类似于网格视图的预期结果)。因此,我也无法禁用此处的选项卡(不使用不受支持的JavaScript)。

如何使用自定义逻辑以支持的方式在类似网格视图的场景中有条件地显示功能区组(例如,没有jQuery / ect)?

1 个答案:

答案 0 :(得分:0)

  

目前,此自定义功能区会根据当前用户的角色禁用功能区按钮组...

我假设您基本上希望根据用户的权限切换功能区功能。

  
    

DisplayRule没有CustomRule选项,因为EnableRule会...

  

正确

  
    

DisplayRule不是一个选项

  

不确定这是否正确。虽然DisplayRule可能没有CustomRule选项,但它确实有MiscellaneousPrivilegeRule

根据您的角色配置和要求,您可以绕过查看用户“角色”,而是设置一个有效检查的规则:如果用户可以阅读发票实体,则显示这个按钮(组)(显然这只是一个例子 - 你明白了)......

如果您的角色更复杂,您可以创建一个伪实体(例如称为“CanViewMySpecialButtons”),从UI中的任何位置删除它,并仅授予应该查看按钮的角色的读取权限。然后,您可以创建一个MiscellaneousPrivilegeRule来检查用户是否可以读取您的伪实体 - 只有您角色中的用户才能看到该实体,因此可以为所有其他用户设置隐藏按钮。