在CRM的开发中ribbon的开发是比较重要的一环,很多客制化的功能都需要动用ribbon区,CRM2013中的名字已经改叫command bar了,但从老版本过来的人都还是习惯叫他ribbon。
Ribbon区加按钮后往往会关联一系列的webresources,javascript就是其中的一种,一般的ribbon开发都是基于form的,要动用home或者Sub-grid的并不太多。在form的开发中,一个javascript的action引用一个js资源,就算该方法中有调用另外的通用js中的方法(比如XrmServiceToolkit.js),只需要将通用js加到form的脚本库里即可,但是如果是homepage那这种方式就行不通了,我们需要换种方式实现了
<Actions>
<JavaScriptFunction FunctionName="DoApprove" Library="$webresource:new_task">
<CrmParameter Value="SelectedControlSelectedItemIds" />
</JavaScriptFunction>
<JavaScriptFunction Library="$webresource:new_global.js" FunctionName="isNaN"/>
</Actions>
额外添加的function,将FunctionName设置成isNaN即可。
Action的调用解决了,另一种使用到javascript funtion的是Enable Rule中的 Custom Javascript Rule,在2013中Enable Rule和Display Rule实现一样的隐藏和显示效果后,Custom Rule在自定义的开发中起到了很大的作用,可以通过脚本很easy的控制ribbon的显示隐藏了。仿照action的方法 如下这种引用方式就行不通了。
<EnableRules>
<EnableRule Id="new.activitypointer.EnableRule0.EnableRule">
<CustomRule FunctionName="ApproveVisible" Library="$webresource:new_task" Default="true" InvertResult="false" />
<CustomRule Library="$webresource:new_global.js" FunctionName="isNaN" Default="true" InvertResult="false" />
</EnableRule>
</EnableRules>
参考文章http://madcomputerist.blogspot.co.uk/2012/06/referencing-multiple-javascript.html