Dynamics CRM 2011 编程系列(13):JS编程之Who Am I

    什么是“Who Am I”?它是Dynamics CRM系统提供给我们的一个Web Service 访问方法,通过该方法我们能获取当前登录系统用户的信息:域账号,所属角色,系统账号Id等等。这类信息不仅仅可以在服务端页面调用,也可以在客户端页面调用。

    在Dynamics CRM 2011之前的系统,想要获取用户登录环境信息需要通过Ajax方法来访问系统的Web Service。但在Dynamics CRM 2011中,系统已经将这类信息进行了封装,并提供了相应的API给我们调用。完美的实现,解决了繁琐的code问题。

我们先感性的认识下这些API吧:

图1

 

图2

 

图3

 

图4

 

图5

 

    我们做个小例子,来看看这类API有什么功能吧。小例子的需求为:判断当前登录的用户是否具有角色“XXX”,如果具有就开放某个实体属性,如果不具有则将某个属性置灰处理。强烈建议读者循序渐进的阅读本系列文章,该节内容涉及到了大量之前介绍的知识。

图6

 

图7

//将这些脚本放在实体的onload事件中
var helper=new RESTHelper();
//Name='酱油哥'中的“酱油哥”需要进行url编码,可以用Asp.net中的Server.UrlEncode方法来编码
var roleList=helper.Read("/gh2011/XRMServices/2011/OrganizationData.svc/RoleSet?$filter=Name eq '%e9%85%b1%e6%b2%b9%e5%93%a5'");
var roles=context.getUserRoles();
var singleTextControl=Xrm.Page.getControl("new_singletextcontrol");
var isOk=false;
for(var tmp in roles)
{
   if(CompareGUID(roles[tmp],roleList.results[0].RoleId))//判断是否具有角色"酱油哥"
   {
       //alert("Yes!");
       isOk=true;
       break;
   } 
}

if(isOk)
{
    singleTextControl.setDisabled(true);   
}


//用这个方法来比较guid可以确保万无一失
function CompareGUID(data1,data2)
{
    data1=data1.replace(/\{?(.{36})\}?/,"$1").toLowerCase();    

    data2=data2.replace(/\{?(.{36})\}?/,"$1").toLowerCase();    



    return data1==data2;

}

 

图8

 

 

小结

     完美的封装,省去了不少code时间。调用这些API不仅限于onload事件,几乎所有的客户端脚本都能调用这些API来处理问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值