Dynamics CRM 根据用户权限不同来进行按钮的显示和隐藏的功能

本文介绍如何使用RibbonWorkbench自定义DynamicsCRM中的按钮,并根据用户的特定角色(如系统管理员或销售员)来控制按钮的可见性。文中详细展示了通过编写JavaScript代码实现这一功能的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:本人刚接触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代码

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已经不显示了,当用户具有售货员角色的时候就会重新显示了。

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值