CRM2011中通过JS脚本方式显示和隐藏ribbon中的自定义按钮
首先该方法不能写在页面的onload中,因为当从子网格返回常规表单的时候ribbon区域会重新加载而常规表单所在的iframe区域是不会被刷新的,所以如果写在onload中的话就控制的不那么完全了,我采取的方式是利用按钮的Enables Rules中CustomRule(A rule that calls a function within a JScript library)这样每次加载都能调用到了。
下面说说代码,先通过F12获取要控制的自定义按钮的ID,例如“new_areacost|NoRelationship|Form|AreaGroupAreaGroup.Mscrm.Form.new_areacost.MainTab.area.submit-Large”着实有点长啊,剩下的就很简单了
1 2 3 4 | var WinbuttonID= "new_areacost|NoRelationship|Form|AreaGroupAreaGroup.Mscrm.Form.new_areacost.MainTab.area.submit-Large" ; var WinBtn = window.top.document.getElementById(WinbuttonID); WinBtn.style.display= '' ; WinBtn.style.display= 'none' ; |
该方法得到了曾丹同学的提示表示下感谢,在他的提示下果断舍弃了经过两天的努力都达不到效果的第二种方法。
第二种则显得有些繁琐而且时而好用时而又不好用,为什么说它时而好用时而又不好用呢,因为之前的一个系统使用成功过但在这个系统中却又不行了。之所以说它不好用是因为parentwindow.document.getElementById(ribbonid)抓取出来的ribbon始终都是空,不知道为什么。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | var button=Xrm.Page.ui.controls.get( "new_name" )._control._element.ownerDocument; var parentwindow=GetFormWindows(button); var display= true ; if (parentwindow!= null ) { var ribbon=parentwindow.document.getElementById(ribbonid); if (ribbon!= null &&display) { ribbon.style.display= 'none' ; } else if (ribbon!= null ) { ribbon.style.dispaly= '' ; } } function GetFormWindows(cus_document) { return cus_document.defaultView || cus_document.parentWindow; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步