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

如果没有安装Ribbon Workbench,请参考博文 Dynamics CRM 客户端程序开发:常用工具介绍之Ribbon Workbench 下载安装,本博文主要使用这个工具。

一般是专门用一个解决方案用来处理命令栏Ribbon区的定制,我这里新增了一个名称为RibbonEditor的解决方案如下。还要值得注意的是一般用一个专门的JS文件来保存Ribbon区(命令栏)用到的Java Script类型Web资源。

 
       然后还需要将要用到的素材,比如要修改的实体,用到的Web资源添加到这个解决方案。我这里是添加现有实体-- 2013测试实体,添加到解决方案中,提示是否要添加想关联的组件的时候,这里一般选择否即可。
 
 
然后点击 CRM > 设置 > 解决方案 界面的 自定义 图标,就会弹出对话框,我这里选择RibbonEditor这个专门用来定制命令栏和Ribbon区的解决方案。
 
 首先确保选择的实体是你要修改的,因为我这个解决方案中只有这一个实体,所以默认就是选择对的,另外需要确
保你选择的事Command Bar,而不是Ribbon,因为2013中更新的实体(含所有自定义的实体)使用的都是命令栏(Command Bar),而不是Ribbon区。因为我要更改的是列表界面,所以是Command Bar中左上角名称是 HOME的那一栏,因为我要添加按钮,所以从TOOLBOX中选择 Button。
 
将TOOLBOX中的Button拖动到Command Bar中合适的位置,我这里是拖动到DELETE后面,拖动后效果如下图所示。可以看到下面中间的Buttons节点多了一个Button,在右边的PROPERTIES我将其几个显示文本属性修改成测试,如下。
 
 
这个按钮没有图标不好看,所以我将其Image16by16属性和Image32by32属性设置一下,为了简便,我设置成和ACTIVE按钮一样的值。
然后增加一个Command,方法是右击 Commands,选择 Add New。
 这时候Commands节点下就会有一个元素了,展开,选中它的子元素,右击,选择 Edit Actions。
 
出来的对话框如下,点击 Add 按钮,可以看到只有两种Action 可选,我这里选择第一种 Javascript Function Action,然后点击 OK 按钮。
 
输入要执行的JavaScript 函数的名称,我这里是输入的是 GetSelectedInfo,Library则是让你选择JScript类型的Web资源,这个Web资源要先加入到Ribbon Workbench打开的解决方案中才能选择到。
 
Parameters是用来为函数传入参数的,点击右边的选择图标,弹出的窗口点击 Add 按钮,可以看到有 5 种类型的参数可以选择,我这里以复杂点的 Crm Parameter为例,选中它,然后点击 OK。

出现窗口如下,有哪些参数在实体的列表页面可以用呢?SDK的Pass Microsoft Dynamics CRM data from a page as a parameter to Ribbon Actions 章节有详细论述,我这里摘录如下:

  • Selected items

    • SelectedControlSelectedItemCount
    • SelectedControlSelectedItemIds
    • SelectedControlSelectedItemReferences
  • All items
    • SelectedControlAllItemCount
    • SelectedControlAllItemIds
    • SelectedControlAllItemReferences
  • Unselected items
    • SelectedControlUnselectedItemCount
    • SelectedControlUnselectedItemIds
    • SelectedControlUnselectedItemReferences
 
我本博文演示使用SelectedControlSelectedItemIds,Value选择这个,Name可以随便命名,然后点击OK按钮关闭这个窗口。
 
这时候有个步骤不能忘,就是为按钮的Command属性设置值,否则你得按钮不会在界面上显示。选择按钮,在PROPERTIES窗口中,为Command属性选择刚才新建的Command。
 
这时候我们可以发布看看效果,点击上面的 Publish 按钮就会开始发布,如果Message中没有提示错误信息就算发布成功了。
 
发布完毕后最好将实体也发布一下。
最后我们测试下,来到修改实体的表格页面,选中两行记录,可以看到这个新增的按钮,图标和激活按钮是一样的。
 
 
我们点击 测试 按钮看看效果如下,将选择的两行记录的主键告诉我了,测试基本成功。
 
 
我于2014年3月12日辛辛苦苦完成了IFD部署,在虚拟机外面的物理机也可以通过outlook访问crm了,我们到outlook中去看看,是Ribbon区,不是命令栏,效果如下:
下面我们演示一下DisplayRule的效果。右击Display Rules,选择New。

Display Rules下面就会增加一个元素,我们右击它,选择 Add Rule。

 
就会弹出让我们选择Display Rule,我这里以第一个Client Type Rule为例,选择它,然后点击 OK 按钮。

然后选择刚才新增的元素,右边的属性设置如下,最后一个属性是设置为Web,就是当用户使用Web客户端打开CRM时候显示,而使用Outlook打开CRM时候不显示。这些Display Rule是什么含义,请自己参考SDK的Define ribbon display rules 章节。

 
还有一个步骤就是选中这个前面建立的Command,在右边属性集中选择DisplayRules,为它选择前面建立的Display Rule,不做这一步的话,你设置的Display Rule不会起作用。
 

最后点击Ribbon Workbench的Publish,还有就是发布下这个实体。

我们先去看看使用Web客户端,就是浏览器打开CRM看看,按钮还在。
我们再去Outlook客户端打开CRM看看,按钮不见了,Display Rule起作用了。

 
最后顺便吐糟下,Ribbon Workbench的Publish速度太慢了,期望早日有所提高,哈哈!
 

PS:我这里用到的JavaScript函数代码非常简单,如下:

function GetSelectedInfo(Selectedids) {
for (var i = 0; i < Selectedids.length; i++) {
alert('选中的第' + (i + 1) + "行,GUID是" + Selectedids[i] + "。");
};
}

Dynamics CRM 客户端程序开发:在实体的列表界面添加按钮的更多相关文章

  1. Dynamics CRM 客户端程序开发:自定义系统标准按钮的可用性

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复125或者20140414可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 一般是新建一个解决方案用于客制化 ...

  2. Dynamics CRM 客户端的插件调试

    Dynamics CRM 客户端的插件调试 一直以来,Dynamics CRM插件在大家的印象中都是不便于调试的,根据官方文档(http://technet.microsoft.com/zh-cn/l ...

  3. iOS开发UI篇—在UIImageView中添加按钮以及Tag的参数说明

    ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明 一.tag参数 一个视图通常都只有一个父视图,多个子视图,在开发中可以通过使用子视图的tag来取出对应的子视图.方法为Viewwi ...

  4. ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明

    ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明 一.tag参数 一个视图通常都只有一个父视图,多个子视图,在开发中可以通过使用子视图的tag来取出对应的子视图.方法为Viewwi ...

  5. Dynamics CRM 2013 报表开发:安装开发工具

    最近项目需要开发报表,顺便看了下,首先需要配置开发环境.需要的工具为: 1.Business Intelligence Development Studio 可下载Sql Server 的安装包,选择 ...

  6. tcp客户端程序开发

    https://www.cnblogs.com/python-No/ 话不多说,直接进入正题 一:客户端一共分为5大块: 1.创建客户端套接字 2.和服务端套接字建立连接 3.发送数据 4.接收发送 ...

  7. Microsoft Dynamics CRM 前瑞开发

    做CRM开发最大的感受就是其前瑞开发过程中,调试起来比较麻烦,需要做一些断点还要配制一些浏览器设置,对新手来说比较困难.还有就是对REST调试,经常为了调试一个正确的结果而花费大量的时间.现在推荐一个 ...

  8. Dynamics CRM 2011 通过数据库修改实体字段的长度需要注意的地方

    一.首先打开数据库,我这里以SQL Server 2012数据库为例. 1.选择工具—>选项 ,如图1 图 1 2. 选择表设计器和数据库设计器—>阻止保存要求重新创建表的更改(S)把前面 ...

  9. Python-TCP客户端程序开发

    TCP客户端,需要与服务端建立连接,连接建立成功后才可以进行数据的传输. # 1.导入模块 import socket if __name__ == '__main__': # 2.创建套接字对象 t ...

随机推荐

  1. Dojo.declare使用方法详解

    ArcGIS API for JavaScript是基于dojo开发的一套API,在实际生产中,我们需要再根据自己的需求实现自定义的功能,最后抽象成接口给前端调用. 我们使用dojo的declare来 ...

  2. django之查询操作及开启事务

    目录 聚合查询 aggregate 聚合函数 分组查询 annotate F与Q查询 F查询 Q查询 ORM操作事务 django中开启事务 聚合查询 aggregate 操作外键字段管理数据的时候, ...

  3. June 30th, 2019. Week 26th, Sunday

    It's so easy to be careless, it takes courage and courage to care. 不在乎很容易,但在乎却需要很多勇气. Sometimes it w ...

  4. 三、ITK的dcm图像读写

    一.主要功能 1.读取单张dcm图像 2.写入单张dcm图像 3.图像调整之后以.jpg格式写入 4.调整之后重新以.dcm格式写入 二.代码 #include "itkImageFileR ...

  5. RabbitMQ学习笔记(三、生产者与消费者)

    目录: 细说交换器 细说队列 发送消息 消费消息 确认与拒绝 细说交换器: 1.方法: public AMQP.Exchange.DeclareOk exchangeDeclare(String ex ...

  6. pytorch 建立模型的几种方法

    利用pytorch来构建网络模型,常用的有如下三种方式 前向传播网络具有如下结构: 卷积层-->Relu层-->池化层-->全连接层-->Relu层 对各Conv2d和Line ...

  7. 发送post请求的接口

    一.简介 所有系统或者软件.网站都是从登录开始,所以首先介绍的第一个post请求是登录. 二.help函数 学习一个新的模块捷径,直接用help()函数查看相关注释和案例内容 for example: ...

  8. AcWing 77. 翻转单词顺序

    习题地址 https://www.acwing.com/problem/content/description/73/ 题目描述输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变. 为简单 ...

  9. P4762 [CERC2014]Virus synthesis

    题意 真是道回文自动机好题. 首先考虑答案必定是一个回文串+剩余部分的形式,因此可以建出回文自动机,之后考虑每个长度为偶数的回文串. 对于一个长度为偶数的回文串,设它在回文自动机上对应的节点为\(x\ ...

  10. 无限可能,Elasticsearch(一)

    这个世界已然被数据淹没.多年来,我们系统间流转和产生的大量数据已让我们不知所措. 现有的技术都集中在如何解决数据仓库存储以及如何结构化这些数据. 这些看上去都挺美好,直到你实际需要基于这些数据实时做决 ...