Dynamics CRM 2011 编程系列(33):Ribbon的开发三(按钮的执行环境)
2012-08-06 17:39
483 查看
之前的两篇博文《Dynamics CRM 2011 编程系列(31):Ribbon的开发一(添加按钮,选项卡,Jewel)》,《Dynamics
CRM 2011 编程系列(32):Ribbon的开发二(按钮的禁用规则)》分别介绍了Dynamics CRM 2011系统中可以向Ribbon中添加的按钮以及这些按钮的显示禁用规则。在日常开发中按钮的功能依赖于它们的执行环境,那怎样获取按钮的执行环境就成了一个关键的问题。
比如我们要添加一个按钮,该按钮要根据当前登录用户的角色来判断是否显示,或者该按钮只有在当前记录关联的父记录状态为可用时才可以单击。要完成这项功能获得按钮的执行环境是关键。
再或者按钮的执行的功能必须的参数只有在该按钮的执行环境中才能获得的时候,怎么获取按钮的执行环境也成为完成该需求的一个关键。如:执行批量操作的HomepageGrid按钮。
本文的开发建立在博客《Dynamics CRM 2011 编程系列(31):Ribbon的开发一(添加按钮,选项卡,Jewel)》的基础上,建议读者在阅读该博文之前阅读该文章。
图1
图2
图3
图4
图5
图6
图7
图8
图9
图10
图11
图12
图13 HomepageGrid按钮执行时获取到的参数,该图中的参数与图11中的参数按序号一一对应(后同)
图14
图15
图16
图17
CRM 2011 编程系列(13):JS编程之Who Am I》中描述的API来提取按钮的执行环境。
CRM 2011 编程系列(32):Ribbon的开发二(按钮的禁用规则)》分别介绍了Dynamics CRM 2011系统中可以向Ribbon中添加的按钮以及这些按钮的显示禁用规则。在日常开发中按钮的功能依赖于它们的执行环境,那怎样获取按钮的执行环境就成了一个关键的问题。
比如我们要添加一个按钮,该按钮要根据当前登录用户的角色来判断是否显示,或者该按钮只有在当前记录关联的父记录状态为可用时才可以单击。要完成这项功能获得按钮的执行环境是关键。
再或者按钮的执行的功能必须的参数只有在该按钮的执行环境中才能获得的时候,怎么获取按钮的执行环境也成为完成该需求的一个关键。如:执行批量操作的HomepageGrid按钮。
本文的开发建立在博客《Dynamics CRM 2011 编程系列(31):Ribbon的开发一(添加按钮,选项卡,Jewel)》的基础上,建议读者在阅读该博文之前阅读该文章。
例子1:具有角色“销售经理”的用户才能点击该按钮
图1
图2
图3
图4
图5
图6
图7
图8
图9
图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个参数可供选择,我们就来看看吧:图11
图12
图13 HomepageGrid按钮执行时获取到的参数,该图中的参数与图11中的参数按序号一一对应(后同)
图14
例子3:Form按钮执行上下文
与HomepageGrid按钮一样,它的上下文是以参数的形式传递。共有23个参数可供选择,我们就来看看吧:图15
图16
图17
小贴士
在按钮的CustEnable规则中可以使用博文《DynamicsCRM 2011 编程系列(13):JS编程之Who Am I》中描述的API来提取按钮的执行环境。
相关文章推荐
- Dynamics CRM 2011 编程系列(31):Ribbon的开发一(添加按钮,选项卡,Jewel)
- Dynamics CRM 2011 编程系列(32):Ribbon的开发二(按钮的禁用规则)
- Dynamics CRM 2011 编程系列(1):开发环境的搭建
- Dynamics CRM 2011 编程系列(14):JS编程之表单控件的执行上下文
- Dynamics CRM 2011 编程系列(19):插件中的事务
- Dynamics CRM 2011 编程系列:自定义工作流
- Dynamics CRM 2011 编程系列(5):JS脚本编程之实战一
- Dynamics CRM 2011 编程系列(2):JS脚本编程之onload事件
- Dynamics CRM 2011 编程系列(11):JS编程之征服表单控件(一)
- Dynamics CRM 2011 编程系列(17):用插件来实现实体的CRUD
- Dynamics CRM 2011 编程系列(2):JS脚本编程之onload事件
- Dynamics CRM 2011 编程系列(3):JS脚本编程之onsave事件
- Dynamics CRM 2011 编程系列(30):使用ASP.NET Ajax技术的自定义页面
- Dynamics CRM 2011 编程系列(18):插件中的Read操作
- 关于Dynamics CRM 2011 编程系列的写作建议(邮箱: ghost_bear@163.com)
- Dynamics CRM 2011 编程系列(7):JS编程之实体的CRUD[Update,Delete]
- Dynamics CRM 2011 编程系列(9):JS编程之客户端实体
- Dynamics CRM 2011 编程系列(13):JS编程之Who Am I
- Dynamics CRM 2011 编程系列(3):JS脚本编程之onsave事件
- Dynamics CRM 2011 编程系列(27):使用触发器