Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)

    之前的两篇博文《Dynamics CRM 2011 编程系列(31):Ribbon的开发一(添加按钮,选项卡,Jewel)》,《Dynamics CRM 2011 编程系列(32):Ribbon的开发二(按钮的禁用规则)》分别介绍了Dynamics CRM 2011系统中可以向Ribbon中添加的按钮以及这些按钮的显示禁用规则。在日常开发中按钮的功能依赖于它们的执行环境,那怎样获取按钮的执行环境就成了一个关键的问题。

   比如我们要添加一个按钮,该按钮要根据当前登录用户的角色来判断是否显示,或者该按钮只有在当前记录关联的父记录状态为可用时才可以单击。要完成这项功能获得按钮的执行环境是关键。

  再或者按钮的执行的功能必须的参数只有在该按钮的执行环境中才能获得的时候,怎么获取按钮的执行环境也成为完成该需求的一个关键。如:执行批量操作的HomepageGrid按钮。

  本文的开发建立在博客《Dynamics CRM 2011 编程系列(31):Ribbon的开发一(添加按钮,选项卡,Jewel)》的基础上,建议读者在阅读该博文之前阅读该文章。

例子1:具有角色“销售经理”的用户才能点击该按钮

  Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第1张图片

图1

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第2张图片

图2

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第3张图片

图3

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第4张图片

图4

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第5张图片

图5

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第6张图片

图6

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第7张图片

图7

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第8张图片

图8

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第9张图片

图9

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第10张图片

图10

使用到的代码

function campaignEnableRule1()
{
   var isEnable=false;
    var path="/$ORGANIZATION$/xrmservices/2011/organizationdata.svc/RoleSet?$select=RoleId&$filter=Name eq '%e9%94%80%e5%94%ae%e7%bb%8f%e7%90%86'";    
   var curOrganizationName=Xrm.Page.context.getOrgUniqueName();
   var curUserRoleList=Xrm.Page.context.getUserRoles();
  var helper=new RESTHelper();
   var allowRoleId;
   path=path.replace(/\$ORGANIZATION\$/,curOrganizationName);
   allowRoleId=helper.Read(path);
  
if(allowRoleId!=null && allowRoleId.results!=undefined)
{
  for(var i=0;i<curUserRoleList.length;i++)
   {
         if(curUserRoleList[i].toString().toLowerCase() == allowRoleId.results[0].RoleId.toString().toLowerCase())
         {
             isEnable=true;
             break;
        }
   }
}
return isEnable;
  
    
}

 

 

例子2:HomepageGrid按钮执行上下文

    HomepageGrid按钮的点击事件可以传递当前执行上下文,这类上下文是以参数的形式传递。共有23个参数可供选择,我们就来看看吧:

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第11张图片

图11

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第12张图片

图12

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第13张图片

图13  HomepageGrid按钮执行时获取到的参数,该图中的参数与图11中的参数按序号一一对应(后同)

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第14张图片

图14

 

 

例子3:Form按钮执行上下文

   与HomepageGrid按钮一样,它的上下文是以参数的形式传递。共有23个参数可供选择,我们就来看看吧:

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第15张图片

图15

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第16张图片

图16

Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)_第17张图片

图17

 

 

小贴士

    在按钮的CustEnable规则中可以使用博文《Dynamics CRM 2011 编程系列(13):JS编程之Who Am I》中描述的API来提取按钮的执行环境。

 

 

你可能感兴趣的:(Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境))