风流不在谈锋胜,袖手无言味最长。这篇文章主要讲述编辑全局命令栏示例:点击按钮展示当前用户的角色相关的知识,希望能为你提供帮助。
我是微软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)就可以看到我前面介绍的效果了。
推荐阅读
- CentOS 7 下 yum 安装和配置 NFS
- 小公司的前端建设的一些思考
- Selenium3自动化测试36单元测试Unittest
- Go 语言入门很简单(正则表达式)
- Python 查找算法_众里寻他千百度,蓦然回首那人却在灯火阑珊处(线性二分,分块插值查找算法)
- [ 数据结构 -- 手撕排序算法第七篇 ] 堆及其堆排序
- 任务终止的最佳实践
- 图数据库|如何从零到一构建一个企业股权图谱系统
- Oracle密码复杂度PASSWORD_VERIFY_FUNCTION