zoukankan      html  css  js  c++  java
  • Dynamics CRM 客户端程序开发:在实体的列表界面添加按钮

          关注本人微信和易信公众号: 微软动态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] + "。");
        };
    } 
  • 相关阅读:
    cocos2dx-lua捕获用户touch事件的几种方式
    Java并发编程之闭锁CountDownLatch简单介绍
    opencv视频播放
    完全备份、差异备份以及增量备份的区别
    如何实现文件增量同步——算法
    Oracle提示“资源正忙,需指定nowait”的解决方案
    oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT
    一次oracle大量数据删除经历
    rownum的使用-分页
    sql语句分页多种方式ROW_NUMBER()OVER
  • 原文地址:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_Customize_Entity_List_Command_Bar.html
Copyright © 2011-2022 走看看