关注本人微信和易信公众号: 微软动态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. js格式化JSON数据

    前言: 最近做的项目中遇到个需要在前端页面中将某个设备需要的数据格式展示出来,方便用户配置.一开始单纯的将数据格式写入到pre标签中, 但是通过pre标签写入的数据格式在代码可视化上不是很优雅.由于上 ...

  2. 深入requests库params|data|json参数

    深入requests库params|data|json参数 一.params params:字典或者字节序列,作为参数增加到URL中.不仅访问URL,还可以向服务器携带参数. 简单来讲也就是说对于原来 ...

  3. Ajax:实现后台验证js实现get方式的异步请求,判断用户名是否重复

    <%@ page contentType="text/html;charset=UTF-8" language="java" %><html& ...

  4. 【转】java的string中,关于split空串总会返回单个元素的数组

    原地址:http://blog.sina.com.cn/s/blog_6f3da9650102x03c.html public class Split { public static void mai ...

  5. 使用docker-compose部署springboot项目

    由于是单机测试,没有测试多主机的跨网络分布式请求. 项目是前后分离的,所以使用nginx作为前端服务器,后端是springboot则直接基于java8环境的容器上跑,cache用的redis,mysq ...

  6. Android项目模块化/组件化开发(非原创)

    文章大纲 一.项目模块化初步介绍二.项目模块化的两种模式与比较三.大型项目模块化的演进四.项目模块化总结五.参考文章   一.项目模块化初步介绍 1. 前言 在Android开发中,随着项目的不断扩展 ...

  7. Resolving RMAN-06023 or RMAN-06025 (Doc ID 2038119.1)

    Resolving RMAN-06023 or RMAN-06025 (Doc ID 2038119.1) APPLIES TO: Oracle Database - Enterprise Editi ...

  8. 程序运行时间测试 - 使用libc 中 time 函数 实现秒级的运行时间检测

    c 标准库中,有time 函数,可以返回 1970年1月1日 开始到现在的秒数,我们可以调用两次的时间差来计算程序运行时间: https://github.com/yaowenxu/Workplace ...

  9. 002 C/C++ 数组的传递

    传递一个数组给一个函数的正确做法: 1.传递数组的内存首地址. 2.传递数组的有效长度.指数组的元素数量. 编译器总是将数组类型的变量作为指针传递. 计算数组的长度: int length = siz ...

  10. go语言设计模式之observer

    observer.go package observer import ( "fmt" ) type Observer interface { Notify(string) } t ...