Dynamics CRM命令栏定制基础知识及手动编辑customization.xml实例
static void Main(string[] args)
{
var service = GetOrganizationService();
RetrieveApplicationRibbonRequest appribReq = new RetrieveApplicationRibbonRequest();
RetrieveApplicationRibbonResponse appribResp = (RetrieveApplicationRibbonResponse)service.Execute(appribReq);
File.WriteAllBytes(@"D:\luoyong\applicationRibbon.xml", unzipRibbon(appribResp.CompressedApplicationRibbonXml));
Console.WriteLine("程序运行完成!");
Console.ReadKey();
} /// <summary>
/// A helper method that decompresses the the Ribbon data returned
/// </summary>
/// <param name="data">The compressed ribbon data</param>
/// <returns></returns>
static byte[] unzipRibbon(byte[] data)
{
System.IO.Packaging.ZipPackage package = null;
MemoryStream memStream = null; memStream = new MemoryStream();
memStream.Write(data, , data.Length);
package = (ZipPackage)ZipPackage.Open(memStream, FileMode.Open); ZipPackagePart part = (ZipPackagePart)package.GetPart(new Uri("/RibbonXml.xml", UriKind.Relative));
using (Stream strm = part.GetStream())
{
long len = strm.Length;
byte[] buff = new byte[len];
strm.Read(buff, , (int)len);
return buff;
}
}
我使用如下的代码导出某个实体的Ribbon定义文件,我这里导出逻辑名称为 new_test 的Ribbon定义,导出来行数还挺多,5027行。
static void Main(string[] args)
{
var service = GetOrganizationService();
const string entityName = "new_test";
RetrieveEntityRibbonRequest entRibReq = new RetrieveEntityRibbonRequest() { RibbonLocationFilter = RibbonLocationFilters.All };
entRibReq.EntityName = entityName;
RetrieveEntityRibbonResponse entRibResp = (RetrieveEntityRibbonResponse)service.Execute(entRibReq);
System.String entityRibbonPath = Path.GetFullPath(@"D:\luoyong\" + entityName + "Ribbon.xml");
File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
Console.WriteLine("程序运行完成!");
Console.ReadKey();
}
按钮我们主要是能在三个地方用到看到,第一个就是实体的列表界面的命令栏,第二个打开显示一条记录的表单界面,第三个就是子网格也会有个命令栏。下面列举了会应用到每个实体命令栏的Tab:
| Tab命名形式 | 显示区域 | 备注 |
| Mscrm.Form.{!实体逻辑名称}.MainTab | 实体表单界面 | 以Mscrm.Form.开头 |
| Mscrm.Form.{!实体逻辑名称}.Related | ||
| Mscrm.Form.{!实体逻辑名称}.Developer | ||
| Mscrm.HomepageGrid.{!实体逻辑名称}.MainTab | 实体列表界面 | 以Mscrm.HomepageGrid开头 |
| Mscrm.HomepageGrid.{!实体逻辑名称}.View | ||
| Mscrm.HomepageGrid.{!实体逻辑名称}.Related | ||
| Mscrm.HomepageGrid.{!实体逻辑名称}.Developer | ||
| Mscrm.SubGrid.{!实体逻辑名称}.ContextualTabs | 子网格界面 | 以Mscrm.SubGrid 开头。但是Dynamics CRM 2013版本以后只有三个按钮,一个新增,一个列表,一个删除。你不能增加显示更多按钮,但是可以隐藏一些按钮。也可以定制点击这些按钮的时候执行的操作。 |
| Mscrm.SubGrid.{!实体逻辑名称}.MainTab |




fetch.xsd
FormXml.xsd
isv.config.xsd
RibbonCore.xsd
RibbonTypes.xsd
RibbonWSS.xsd
SiteMap.xsd
SiteMapType.xsd
VisualizationDataDescription.xsd



<RibbonDiffXml>
<CustomActions />
<Templates>
<RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates>
</Templates>
<CommandDefinitions />
<RuleDefinitions>
<TabDisplayRules />
<DisplayRules />
<EnableRules />
</RuleDefinitions>
<LocLabels />
</RibbonDiffXml>

<RibbonDiffXml>
<CustomActions>
<HideCustomAction Location="Mscrm.HomepageGrid.new_area.DeleteMenu" HideActionId="Mscrm.HomepageGrid.new_area.DeleteMenu.HideAction" />
<HideCustomAction Location="Mscrm.Form.new_area.Delete" HideActionId="Mscrm.Form.new_area.Delete.HideAction" />
</CustomActions>
<Templates>
<RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates>
</Templates>
<CommandDefinitions />
<RuleDefinitions>
<TabDisplayRules />
<DisplayRules />
<EnableRules />
</RuleDefinitions>
<LocLabels />
</RibbonDiffXml>




Dynamics CRM命令栏定制基础知识及手动编辑customization.xml实例的更多相关文章
- Windows常用命令汇总以及基础知识
命令部分: dir dir指定要列出的驱动器.目录和/或文件 ,/?显示所有命令 例:dir /b /s /o:n /a:a 表示显示当前路径下的所有文件的绝对路径,包含子文件夹的内容 /b表示去除摘 ...
- Redis命令总结及其基础知识讲述
1.redis的不同之处 Redis拥有其他数据库不具备的数据结构,又拥有内存存储(这使得redis的速度非常快),远程操作(使得redis可以与多个客户端和服务器进行连接).持久化(使得服务器可以在 ...
- 《Linux基础知识及命令》系列分享专栏
<Linux基础知识及命令>系列分享专栏 本专题详细为大家讲解了Linux入门基础知识,思路清晰,简单易懂.本专题非常适合刚刚学习Linux的小白来学习,通过学习该专题会让你由入门达到中级 ...
- Dynamics CRM定制子网格添加按钮实例之一
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复221或者20160430可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
- Dynamics 365 CE命令栏按钮点击后刷新表单页面方法
微软动态CRM专家罗勇 ,回复326或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! Dynamics 365 Customer Engagement ...
- Dynamics CRM通过定制应用程序功能区为符合条件的实体表单增加按钮
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复167或者20151029可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 前面的博文都是为一个实体添加按钮 ...
- Dynamics CRM - 解决无法使用 Ribbon Workbench 2016 定制 Sub-Grid View Button 的问题(SubGrid MainTab 消失之谜)
发现问题: 在 Dynamics CRM 开发中,会经常使用 Ribbon Workbench 工具来定制 Button 或者对已有 Button 进行自定义功能开发,比如隐藏 SubGrid 的 A ...
- Windows权限提升基础知识和命令
介绍 这篇文章是介绍window的权限提升,虽然不是一个全面的指南,但会试图覆盖主要的技术,常用的资源列表在文章底部,可供大家参考. window权限提升基础知识 初始信息收集 在开始提权之前,我们需 ...
- Linux基础知识第九讲,linux中的解压缩,以及软件安装命令
目录 Linux基础知识第九讲,linux中的解压缩,以及软件安装命令 一丶Linux Mac Windows下的压缩格式简介 2.压缩以及解压缩 3.linux中的软件安装以及卸载 1.apt进行安 ...
随机推荐
- JS基础语法---函数作为返回值使用
结论:函数是可以作为返回值使用的 function f1() { console.log("f1函数调用了"); return function() { console.log(& ...
- Linux电源管理(7)_Wakeup events framework
1. 前言 本文继续"Linux电源管理(6)_Generic PM之Suspend功能"中有关suspend同步以及PM wakeup的话题.这个话题,是近几年Linux ker ...
- 【zabbix服务】修改zabbix_server默认端口号
1. zabbix-server的默认端口号是10051.如果存在端口号冲突,需要更改端口号. 2. 更改配置文件 # 监听端口这行默认被注释的(将下面的端口改为自己定义的) [root@tanbao ...
- Jmeter常用的两大性能测试场景
一.阶梯式场景 该场景主要应用在负载测试里面,通过设定一定的并发线程数,给定加压规则,遵循“缓起步,快结束”的原则,不断地增加并发用户来找到系统的性能瓶颈,进而有针对性的进行各方面的系统优化. 使用到 ...
- IO - 同步 异步 阻塞 非阻塞的区别,学习Swoole有帮助
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?本文较长需耐心阅读,基础 ...
- sparql 查询语句快速入门
介绍 RDF is a directed, labeled graph data format for representing information in the Web. RDF is ofte ...
- node.js安装本地模块遇到的目录锁定问题【新手问题】
昨天发过文字版的,后来以为问题没解决就删除,今天偷个懒,直接上图. 被书中的介绍给误导了,虽然和书中不一样,但实际上自己练习写的模块已经是可用了.也犯了个常识性的错误:Warn一般不会有太大的影响.
- Git worktree 使用笔记【转】
gitworktree 本地仓库的多个分支在对应的文件夹内管理,能够减少很多操作,便捷高效~ 一 worktree 的基本概念和操作 再也不用克隆多个仓库啦!git worktree 一个 git 仓 ...
- MySQL数据库~~~~~索引
1. 索引 索引在MySQL中也叫"键"或者"key",是存储引擎于快速找到记录的一种数据结构. 索引的数据结构: B+树 B+树性质: 索引字段要尽量小; 索 ...
- Linux系统iptables与firewalld防火墙
iptables iptables服务用于处理或过滤流量的策略条目(规则),多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类. 在进行路由选择前处理数据包(PREROUTING) ...