在上一篇中,我用一个例子,简单介绍了如何添加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. 物理机(真实机)能ping通虚拟机,但是虚拟机无法ping通真实机(可能是防火墙问题)

    物理机IP地址:192.168.1.209 虚拟机IP地址:192.168.1.5.192.168.1.7.192.168.1.10 物理机设置:

  2. 第一章 Slenium2-Java 自动化测试基础

    都是一些最基础的知识点. 一:软件测试分类 1)单元测试:单元测试(或模块测试)是对程序中的单个子程序或具有独立功能的代码段进行测试的过程.2)集成测试:集成测试是在单元测试的基础上,先通过单元模块组 ...

  3. 《javascript语言精粹》——第3章对象

    第三章:对象: 属性名字:可以是包括空字符串在内的任意字符串: 属性值:是除undefined值之外的任何值; [1].对象字面量: var obj={}; //空对象 var obj = new O ...

  4. Java对象嵌套

    1.基础篇 Java面向对象东西太深奥了,本文只是发表一点自己的见解. 首先 举个栗子!! 汽车, 我们先给汽车定义个轮胎类  有一个属性名 轮胎尺寸 /** *定义一个轮胎类 */ class Wh ...

  5. 关于Java在Linux or Android平台调用.so库

    Linux平台Java调用so库-JNI使用例子 android NDK开发及调用标准linux动态库.so文件 在Android项目中调用已有.so库 Android 调用.so文件 jni And ...

  6. UVa 573 - The Snail

    题目大意:有一只蜗牛位于深一个深度为h米的井底,它白天向上爬u米,晚上向下滑d米,由于疲劳原因,蜗牛白天爬的高度会比上一天少f%(总是相对于第一天),如果白天爬的高度小于0,那么这天它就不再向上爬,问 ...

  7. bzoj2049

    2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 7579  Solved: 3548[Submit] ...

  8. Mysql 创建数据库后修改属性

    添加表字段 alter table table1 add transactor varchar(10) not Null; alter table   table1 add id int unsign ...

  9. 导航栏项目滑过时子菜单显示/隐藏jquery代码

    ;(function(window){    $('.menuitem').hover(function(){        $('>a',this).css('background-color ...

  10. eclipse 标签标题乱码解决方法

    一般出现此类问题都是由于更改本地语言设置引起的. 解决办法: 1.恢复到原来默认的语言和地域 2.更改eclipse主题(Window-->preferences-->General--& ...