在上一篇中,我用一个例子,简单介绍了如何添加Ribbon Button,以及如何理解RibbonDiffXml,对这方面还不清楚的,可以先看看这篇博文:Dynamics CRM 2015-Form之添加Ribbon Button

接着上一回的讲,在日常开发中,我们不仅需要添加Button,还需要根据一些Rule,对Button进行控制,比如Create Record的时候,Button是Disable的,然后当满足一定条件的时候,Button变成Enable。

下面就说说如何配置。

上一篇我们说到了使用<CommandDefinition><Actions></CommandDefinition>定义Button的点击事件,这里我们需要用到<EnableRule />节点。

        <CommandDefinitions>
<CommandDefinition Id="***">
<EnableRules>
<EnableRule Id="***.CustomRule" />
<EnableRule Id="***.FormStateRule" />
</EnableRules>
<DisplayRules />
<Actions>
<JavaScriptFunction FunctionName="alertFunc" Library="$webresource:***.js" />
</Actions>
</CommandDefinition>
</CommandDefinitions>

Id的命名规则不用过多说,大家注意Organization Level的唯一性。而这里EnableRule的Id,匹配的是<RuleDefinitions><EnableRules /></RuleDefinitions>里面EnableRule的Id。

根据所要说明的例子,我们需要定义两个Rule,一个用来控制Create时候,Button的状态,一个用来控制Record操作过程中,Button的状态

<RuleDefinitions>
<TabDisplayRules />
<DisplayRules />
<EnableRules>
<EnableRule Id="***.CustomRule">
<CustomRule Library="$webresource:js1.js" FunctionName="NaN" Default="true" />
<CustomRule Library="$webresource:js2.js" FunctionName="NaN" Default="true" />
<CustomRule Library="$webresource:js3.js" FunctionName="hideButtonOnProRun">
</CustomRule>
</EnableRule>
<EnableRule Id="***FormStateRule">
<FormStateRule State="Create" InvertResult="true" />
</EnableRule>
</EnableRules>
</RuleDefinitions>

先说第一个,Create时候Button是Disable状态,使用<FormStateRule />节点,这个节点专门针对的是Form的状态。

注意,InvertResult,这个表示的是指定值的否定值。也就是说,如果是Disable,就用true值,对应状态是false;如果是Enable,就用false,对应状态是true。

再来配置第二个,满足一定条件才Enable,使用<CustomRule />节点。

FunctionName和Library是必填项,而Default,指定的是如果无法决定返回值,就返回Default指定的值。

 <CustomRule Library="$webresource:js3.js" FunctionName="hideButtonOnProRun">

这一段,大家肯定都能理解,但是之前还有两个节点,又是什么意思呢?

我们指定的js和function,经常会遇到引用的情况,前面两个节点,就是用来指定引用的webresource的。

将这个再配置到我们之前的RibbonDiffXml里面,Button功能就更完整了。

Dynamics CRM 2015-Form之控制Ribbon Button的更多相关文章

  1. Dynamics CRM 2013 SP1 升级到Dynamics CRM 2015

     首先截图一下我要升级的Dynamics CRM 2013版本如下图,可以看到是打了SP1后的CRM 2013.         运行CRM 2015简体中文版的安装文件CRM2015-Server- ...

  2. 在Dynamics CRM 2015中通过3CX插件(以及3CX windows phone)拨出电话

    背景 在On-premises部署的Dynamics CRM中实现通过网页拨通客户电话的功能 要点 3CX 提供了开箱即用的Dynamics CRM Solution,只需要在Microsoft Dy ...

  3. Dynamics CRM 2015 Online Update1 UI界面的更新变化

    听说出  Dynamics CRM 2015 Online  Update1了,立马跑去申请了个30天试用版简单的看了下,UI上的变化还是让人耳目一新的,也可能是被CRM2013的UI蹂躏太久了没 ...

  4. Microsoft Dynamics CRM 2015 and Microsoft Dynamics CRM 2016 Performance and Scalability Documentation

    摘要: 本人微信公众号:微软动态CRM专家罗勇 ,回复285或者20181126可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me ...

  5. Dynamics CRM 2015 New Feature (9): Services Changes

    Dynamics CRM 2015 为开发者加入了一些新的Service Request以及一个帮助类库XrmTooling,它支持连接各种环境下的CRM,比方:Online,O365,On Prem ...

  6. 在标准实体特殊消息上注册插件及Dynamics CRM 2015中计算字段的使用

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复157或者20151005可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 前面的 插件系列博客教程 讲述了 ...

  7. Dynamics CRM 2015/2016新特性之三十二:新增乐观并发处理

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复215或者20160328可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  8. Dynamics CRM 2015/2016新特性之三十三:有了ExecuteTransactionRequest,再也不用担心部分成功部分失败了

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复216或者20160329可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  9. Microsoft Dynamics CRM 2015 服务器系统的性能维护,追踪, 也可以用到任务管理器哟...

    Microsoft Dynamics CRM 2015 的追踪是一个很有用的function,它能为我们的CRM调试,评估 提供有价值的信息:我们可以用window的性能监控工具来了解CRM的性能状态 ...

随机推荐

  1. ucos队列的实现--源码分析

    之前说到事件,讲了事件,信号量和互斥信号量,还有一个队列没说,今天说说队列. 队列是用在任务之间传送多个消息的时候,a任务发送消息,b任务发送消息,然后c任务可以依次去提取出b和a传递的消息,不会造成 ...

  2. css 之!important

    主要是自己犯了个错误: 把 !important 放到了分号后面; 正确写法写法: .current{ background-color: #f1f1f1; border-left: 2px soli ...

  3. CCArray

    CCArray也是cocos2d-x自己写的类.它相当于是objc的NSArray.在cocos2d-x中是没有NSArray的概念的(NSArray和NSMutableArray的唯一区别就是一个不 ...

  4. Recovering a WiredTiger collection from a corrupt MongoDB installation

    Reference: http://www.alexbevi.com/blog/2016/02/10/recovering-a-wiredtiger-collection-from-a-corrupt ...

  5. MMA

    在32位的系统上,线性地址空间可达到4GB,这4GB一般按照3:1的比例进行分配,也就是说用户进程享有前3GB线性地址空间,而内核独享最后1GB线性地址空间.由于虚拟内存的引入,每个进程都可拥有3GB ...

  6. Java数据结构整理(一)

    ava数据结构内容整理关键字: 数据结构 Collection:List.SetMap:HashMap.HashTable如何在它们之间选择一.Array , ArraysJava所有“存储及随机访问 ...

  7. UVa 507 - Jill Rides Again

    题目大意:最大和子序列问题.由于具有最大和的子序列具有一下性质:第一项不为负数,并且从第一项开始累加,中间不会有和出现负数,因为一旦有负数我们可以抛弃前边的部分以得到更大的子序列和,这将会产生矛盾. ...

  8. C++中vector 容器的基本操作

    vector是一种简单高效的容器,具有自动内存管理功能.对于大小为n的vector容器,它的元素下标是0~n-1. vector有二个重要方法:     begin(): 返回首元素位置的迭代器.   ...

  9. Violin 琴弦介绍

    共四根弦,从粗到细: 第四弦:音名:G:唱名:Sol 第三弦:音名:D:唱名:Re 第二弦:音名:A:唱名:La 第一弦:音名:E:唱名:Mi

  10. cocharan-Armitage trend test

    Cochran-Armitage trend test是我们常说的趋势卡方检验,一般是针对基因型的2*3列联表的.譬如说三种基因型,如果按照某一个allele来看,可以有0.1.2个拷贝,是有序的,我 ...