Dynamics CRM 根据用户权限不同来进行按钮的显示和隐藏的功能
2017-08-17 10:33
831 查看
注:本人刚接触Dynamics CRM不久,也是个小白,写的内容算是自己做的笔记,也给新人一些参考,写的不对或者不好的地方请指出来,大家一起学习, 有问题可在下方评论,大神勿喷。
上一篇文章Dynamics CRM 365 Button自定义之RibbonWorkbench2016介绍了通过RibbonWorkbench 自定义Button,接下来我们将根据用户角色来显示和隐藏当前Button。
首先来看一张最后的效果图,当前具有系统管理员和销售员角色权限的情况,可以看到这里显示了百度MAP这个按钮。
下面将进行我们的操作,首先还是进入到我们的RibbonWorkbench解决方案里面,[注:选择Solution时,当前Solution必须包含需要操作的Entity] 第一步选择你要操作的Entity ,然后选择要操作的Button,这里我们需要对Button进行启用和禁用,我们选择Enable Rule 点击加号。
添加一个步骤,选择Custom Rule 自定义规则。
这里我们让他默认为false,FunctionName为你js定方法名,Library为你上传在Solution的js文件
下面是js代码
接下来我们打开当前Button command指令,将我们创建的Enable Rule 添加进去
添加完成后
设置>安全性>用户 选中我们当前的用户 ,点击管理角色,将我们的售货员的角色的勾去掉,点击确定。
【友情提示:在没有备用具有系统管理员角色的用户时,千万不要将系系统管理员的角色删掉,不然。。。 嘿嘿 ,你自己去想想吧,别问我为什么要提示你们,宝宝想哭,,,】
大功告成,这里的Button已经不显示了,当用户具有售货员角色的时候就会重新显示了。
上一篇文章Dynamics CRM 365 Button自定义之RibbonWorkbench2016介绍了通过RibbonWorkbench 自定义Button,接下来我们将根据用户角色来显示和隐藏当前Button。
首先来看一张最后的效果图,当前具有系统管理员和销售员角色权限的情况,可以看到这里显示了百度MAP这个按钮。
下面将进行我们的操作,首先还是进入到我们的RibbonWorkbench解决方案里面,[注:选择Solution时,当前Solution必须包含需要操作的Entity] 第一步选择你要操作的Entity ,然后选择要操作的Button,这里我们需要对Button进行启用和禁用,我们选择Enable Rule 点击加号。
添加一个步骤,选择Custom Rule 自定义规则。
这里我们让他默认为false,FunctionName为你js定方法名,Library为你上传在Solution的js文件
下面是js代码
var role=false; function ShowRoleForBaidu() { var RoleId=Xrm.Page.context.getUserRoles();//获取当前的权限id //alert(RoleId); //有时候我们获取的id加了{}了的,这时候我们需要将它转换一下 // var newRoleId=RoleId.replace(/^{/, "").replace(/}$/, ""); for (var i=0;i<RoleId.length;i++) { //之所以用for是因为当前的用户可能不止一个角色,我们需要将他遍历出来。 var req = new XMLHttpRequest(); req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.0/roles(" + RoleId[i] + ")?$select=name", false);//true是异步,false是同步 req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("Prefer", "odata.include-annotations=\"*\""); req.onreadystatechange = function () { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 200) {//200执行成功且有返回值 var result = JSON.parse(this.response); var name = result["name"]; if (name == "销售员") { role = true; } } else { var error = JSON.parse(this.response).error; Xrm.Utility.alertDialog(this.statusText + error.message+"错误"); } } }; req.send(); } return role; }
接下来我们打开当前Button command指令,将我们创建的Enable Rule 添加进去
添加完成后
设置>安全性>用户 选中我们当前的用户 ,点击管理角色,将我们的售货员的角色的勾去掉,点击确定。
【友情提示:在没有备用具有系统管理员角色的用户时,千万不要将系系统管理员的角色删掉,不然。。。 嘿嘿 ,你自己去想想吧,别问我为什么要提示你们,宝宝想哭,,,】
大功告成,这里的Button已经不显示了,当用户具有售货员角色的时候就会重新显示了。
相关文章推荐
- OA权限模块根据用户权限显示不同的操作按钮
- Asp.net web 根据不同的用户权限显示不同的菜单
- laravel中根据 用户权限 所显示用户对每条数据 相对应的操作按钮
- SharePoint 2010 根据不同的用户权限显示不同的导航
- sharepoint 2010 如何根据权限控制Ribbon区域功能按钮的显示
- 052医疗项目-模块五:权限设置-实现根据用户显示不同的菜单
- 怎样让DataGrid根据不同的用户权限判断是否显示:编辑列,删除列?
- 根据用户所属组显示不同功能模块
- OA权限模块根据用户权限显示不同的菜单
- Adminimize 插件:WordPress根据用户角色显示/隐藏某些后台功能
- SharePoint 2010根据不同的用户权限显示不同的导航
- Django 权限认证 编写 -- 根据不同的用户,设置不同的显示和访问权限
- web后台根据权限控制按钮显示/隐藏的方案
- 调用Gmaps根据地址显示对应的Google地图(对控件进行隐藏和改变)
- 根据条件,隐藏或显示gridview中的按钮或其他控件,
- javascript 根据select所选项的不同显示和隐藏部分内容
- Windows server 2008根据用户权限显示共享文件夹
- ASP根据用户权限判断显示的列标题
- 黑马程序员之WinForm编程基础学习笔记:页面上有一张图片,默认是隐藏的,用户在文本框中输入身份证号(131226198105223452),点击按钮,如果年龄大于18岁则显示图片。
- 一个页面根据功能划分为不同的块的样式显示