在上一篇中,我用一个例子,简单介绍了如何添加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. FZU 2110 Star

    简单暴力题,读入%lld会WA,%I64d能过. #include<cstdio> #include<cstring> #include<cmath> #inclu ...

  2. box2d中的物理世界

    box2d中的物理世界,即b2World类就是一个包含了各种物体(body,物理体,或者叫刚体),固定附着物(fixture,形状与物理体的绑定物)以及各种约束体(比如关节),并使其在当中完成各种交互 ...

  3. 了解HTML/HTML5中的download属性

    一.download属性是个什么鬼? 首先看下面这种截图: 如果我们想实现点击上面的下载按钮下载一张图片,你会如何实现? 我们可能会想到一个最简单的方法,就是直接按钮a标签链接一张图片,类似下面这样: ...

  4. c#中反射

    在.Net 中,程序集(Assembly)中保存了元数据(MetaData)信息,因此就可以通过分析元数据来获取程序集中的内容,比如类,方法,属性等,这大大方便了在运行时去动态创建实例. MSDN解释 ...

  5. 主流IOC框架测验(.NET)

    上一篇中,我简单介绍了下Autofac的使用,有人希望能有个性能上的测试,考虑到有那么多的IOC框架,而主流的有:Castle Windsor.微软企业库中的Unity.Spring.NET.Stru ...

  6. UVa 10812 - Beat the Spread!

    题目大意:知道一场橄榄球比赛比分的和以及差的绝对值,算出这两个数.注意判断结果的可能性(比分为非负数). #include <cstdio> int main() { #ifdef LOC ...

  7. 使用Python脚本操作MongoDB的教程

    Reference:  http://www.jb51.net/article/64225.htm

  8. Python使用Selenium/PhantomJS

    安装selenium: 1 pip install selenium 安装PhantomJS: 1 2 3 4 https://bitbucket.org/ariya/phantomjs/downlo ...

  9. 环信 之 iOS 客户端集成三:基础功能

    SDK中,大部分与网络有关的操作,都有三种方法: 同步方法 通过delegate回调的异步方法.要想能收到回调,必须要注册为:[[EaseMob sharedInstance].chatManager ...

  10. iOS 之 自动释放池

    向一个对象发送autorelease消息时,cocoa会将该对象的一个引用放入最新的自动释放池.作用域结束时,自动释放池会被释放,池中所有的对象也就被释放了.