编辑全局命令栏示例:点击按钮展示当前用户的角色
Posted luoyong0201
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编辑全局命令栏示例:点击按钮展示当前用户的角色相关的知识,希望对你有一定的参考价值。
我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复468或者20220424可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!
在系统中查看自己授予的角色,目前据我所知没有特别简便的方法。当然可以通过类似下面的高级查找列出自己分派给自己的角色,然后把这个私有视图贡献给普通用户所在的团队也可以。普通用户操作起来还是稍显麻烦。
还可以在导航栏中增加一个导航项目,点击打开一个html Web资源,通过代码展示当前用户的角色也可以。
但是可以用另外一种更加简便对于普通用于更加友好的方法,定制全局命令栏增加一个按钮,点击后弹出对话框告诉用户当前拥有的角色。
本文主要参考 Global ribbon Customization in Dynamics 365 ,下面是效果,可以看到在右上角这里增加了一个图标,提示文字是 我的安全角色。
点击这个按钮就会弹出提示框,告知当前用户的安全角色。
然后接着讲实现方法。将Application Ribbons添加到我专门用于定制命令栏的自定义解决方案中,不添加依赖项,移除解决方案中的其他组件,确保该解决方案中的组件数量最少。
然后使用Ribbon Workbench打开这个解决方案进行编辑,找到 Mscrm.GlobalTab 在这个tab中添加一个按钮。
除了设置提示文本之外,这个按钮的图标(ModernImage属性)我设置为 $webresource:msdyn_/Images/IC_SecurityRole ,因为这个图标刚好契合,而且是白色的SVG图片,和背景不会有违和感。
然后我增加一个命令,命令的设置如下,我只设置了Action,没有设置Enable Rule和Display Rule。
这里我使用的JScript 类型的Web资源的代码如下:
"use strict";
var LuoYong = window.LuoYong || ;
LuoYong.Common = LuoYong.Common || ;
(function ()
this.DisplayMyRoles = function ()
var currentRoles = Xrm.Utility.getGlobalContext().userSettings.roles;
var roles = "";
currentRoles.forEach(function (role) roles += role.name + "\\n" );
var alertStrings = confirmButtonLabel: "确定", text: `$roles`, title: "我的角色" ;
var alertOptions = height: 220, width: 260 ;
Xrm.Navigation.openAlertDialog(alertStrings, alertOptions);
).call(LuoYong.Common);
然后将这个命令和按钮关联起来,在Ribbon Workbench中的展示如下:
我们知道在Ribbon Workbench中一顿操作猛如虎,也是改动RibbonDiff中的内容,我这里贴出来改了啥:
<RibbonDiffXml>
<CustomActions>
<CustomAction Id="ly.ApplicationRibbon.DisplayMyRoles.Button.CustomAction" Location="Mscrm.GlobalTab.Tools.Controls._children" Sequence="60">
<CommandUIDefinition>
<Button Alt="$LocLabels:ly.ApplicationRibbon.DisplayMyRoles.Button.Alt" Command="ly.ApplicationRibbon.DisplayMyRoles.Command" Id="ly.ApplicationRibbon.DisplayMyRoles.Button" LabelText="$LocLabels:ly.ApplicationRibbon.DisplayMyRoles.Button.LabelText" Sequence="60" TemplateAlias="o1" ToolTipTitle="$LocLabels:ly.ApplicationRibbon.DisplayMyRoles.Button.ToolTipTitle" ToolTipDescription="$LocLabels:ly.ApplicationRibbon.DisplayMyRoles.Button.ToolTipDescription" ModernImage="$webresource:msdyn_/Images/IC_SecurityRole" />
</CommandUIDefinition>
</CustomAction>
</CustomActions>
<Templates>
<RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates>
</Templates>
<CommandDefinitions>
<CommandDefinition Id="ly.ApplicationRibbon.DisplayMyRoles.Command">
<EnableRules />
<DisplayRules />
<Actions>
<javascriptFunction FunctionName="LuoYong.Common.DisplayMyRoles" Library="$webresource:ly_/scripts/common/common.js" />
</Actions>
</CommandDefinition>
</CommandDefinitions>
<RuleDefinitions>
<TabDisplayRules />
<DisplayRules />
<EnableRules />
</RuleDefinitions>
<LocLabels>
<LocLabel Id="ly.ApplicationRibbon.DisplayMyRoles.Button.Alt">
<Titles>
<Title description="我的安全角色" languagecode="1033" />
</Titles>
</LocLabel>
<LocLabel Id="ly.ApplicationRibbon.DisplayMyRoles.Button.LabelText">
<Titles>
<Title description="我的安全角色" languagecode="1033" />
</Titles>
</LocLabel>
<LocLabel Id="ly.ApplicationRibbon.DisplayMyRoles.Button.ToolTipDescription">
<Titles>
<Title description="我的安全角色" languagecode="1033" />
</Titles>
</LocLabel>
<LocLabel Id="ly.ApplicationRibbon.DisplayMyRoles.Button.ToolTipTitle">
<Titles>
<Title description="我的安全角色" languagecode="1033" />
</Titles>
</LocLabel>
</LocLabels>
</RibbonDiffXml>
发布成功后,强制刷新浏览器(Ctrl + F5)就可以看到我前面介绍的效果了。
以上是关于编辑全局命令栏示例:点击按钮展示当前用户的角色的主要内容,如果未能解决你的问题,请参考以下文章
用户界面框架jQuery EasyUI示例大全之进度栏搜索框及表单演示