CRM中的选项集多选一直是客户需求中的必选项,但从CRM进国内的3.0时代开始到目前的2015版本均没有提供该功能,但既然客户要了就得想办法满足,既然CRM本身的功能上不支持,那我们只有使用非官方支持的方法了,操作DOM。

之前在2011中做过类似的功能,但最新无意中看到这篇博文:http://www.cnblogs.com/gnile/p/3429909.html,思路上要比我之前实现的要精简的多,顾决定重新实现下该功能,废话不多说,直接上代码。

function LoadOptions() {
var fieldSchema = "optionlist";
var optionSetValueList = Xrm.Page.getAttribute("new_optionlist").getOptions();
var picklistValue = Xrm.Page.getAttribute("new_optionvalue").getValue(); //step1:开始构建多选所需的html
var appendHtml = "";
//border:1px solid #f3f1f2;
appendHtml += "<div style=\"padding-top:0px;padding-left:0px;padding-bottom:20px;padding-right:20px; margin-left:15px;\">";
appendHtml += "<ul style=\"list-style:none;\">"; for (var i = 0; i < optionSetValueList.length - 1; i++) {
var checkboxId = "cb_" + fieldSchema + "_" + i;
appendHtml += "<li style=\"float:left;display:block;padding-left:5px;\">";
appendHtml += "<input type=\"checkbox\" value=\"" + optionSetValueList[i].value + "\" style=\"width:auto;\" class=\"" + fieldSchema + "\" id=\"" + checkboxId + "\" "; //step2:加载已经保存的选项
if (picklistValue != null && picklistValue.indexOf(optionSetValueList[i].value + ":" + optionSetValueList[i].text + ";") > -1) {
appendHtml += "checked=\"checked\"";
} appendHtml += "/>"; appendHtml += "<label for=\"" + checkboxId + "\">" + optionSetValueList[i].text + "</label>";
appendHtml += "</li>";
} appendHtml += "</ul>";
appendHtml += "</div>"; //step3:用构建好的html替换原先的picklist的html
$("#new_optionlist_d").html(appendHtml);
}

function OnSave()
{
var saveValues = "";
$(".optionlist").each(function () {
if (this.checked) {
saveValues += this.value + ":" + this.nextSibling.innerText + ";";
}
}); Xrm.Page.getAttribute("new_optionvalue").setValue(saveValues);
}

代码主要由两个方法组成,一个是formload的时候执行的LoadOptions方法,该方法即构造多选框,新建的时候新建多选框,编辑的时候呈现多选框的checked状态。其中用到两个字段,一个new_optionlist即选项集字段,一个new_optionvalue即保存复选框选中后的值,new_optionvalue中存值得格式为"value:text;",主要中在代码中的step2中。save方法中名为optionlist的即是我前面动态生成的type为checkbox的input的class,通过该方式取所有的checkbox来判断是否checked,如果是checked则取出它的value进行值得拼接。

具体效果如下图,实际使用过程中需将下拉值也就是new_optionvalue字段隐藏,我这里显示出来主要是让你看下我前面所说的保存格式。

IE11效果图



Chrome效果图

Microsoft Edge效果图

IE9效果图

这里需要说明下上述代码是拷贝的前面所提的博文并在他的基础上进行了些改进,并且我用的是getOptions这一API获取的选项集而非soap的方式,上面的截图提供了4种浏览器环境均OK没遇到他博文中说的情况,一时也找不到IE8所以没试应该也是OK的。

Microsoft Dynamics CRM 2013/2015 选项集的多选的更多相关文章

  1. Microsoft Dynamics CRM 2013 --选项集的多选

    由于从Microsoft Dynamics CRM 2011到Microsoft Dynamics CRM 2013,界面的风格发生了很大的变化 故原先在2011上开发的选项集多选在2013上面已经不 ...

  2. Microsoft Dynamics CRM 2013 --针对特定实体,取消保存功能(包含自动保存)

    AutoSave 是 Microsoft Dynamics CRM 2013 一个新特性. 但AutoSave的有效范围是[所有实体],不允许针对特定某一实体进行设置. 所以,若想针对特定实体进行设置 ...

  3. Microsoft Dynamics CRM 2013 and 2011 Update Rollups and Service Packs

      Microsoft Dynamics CRM 2013   BTW: RC stands for Release for Candidate, and RTM stands for Release ...

  4. Microsoft Dynamics CRM 2013 安装程序及SDK 下载地址

    Microsoft Dynamics CRM 2013 已经具有相关资料 2013 Setup (Microsoft Dynamics CRM Server 2013) 下载地址: http://ww ...

  5. Microsoft Dynamics CRM 2013 安装过程图解及安装序列号

    Microsoft Dynamics CRM 2013 安装过程 图解   在安装前,先持一下SQL配置管理,将相关的服务打开.(由于在虚拟机里,许多服务需要时才会打开,像Reporting Serv ...

  6. Microsoft Dynamics CRM 2013 相关安装包下载

    90-day trial keys:Microsoft Dynamics CRM Workgroup Server 2013 (5 CAL limit):NX77Y-BTBCV-JP3T3-8W7JH ...

  7. 从 Microsoft Dynamics CRM 4.0 server迁移到 Microsoft Dynamics CRM 2013 Server

    不能就地升级早于 Microsoft Dynamics CRM Server 2011 的版本号,比方 Microsoft Dynamics CRM 4.0 server.可是,能够在升级过程中使用 ...

  8. Microsoft Dynamics CRM 2013 for Outlook 的硬件要求

    当仅联机或脱机模式下执行 Microsoft Dynamics CRM 2013 for Microsoft Office Outlook 时,下表列出了建议的最低硬件要求 watermark/2/t ...

  9. Microsoft Dynamics CRM 2013 安装过程 图解

    在安装前,先持一下SQL配置管理,将相关的服务打开.(由于在虚拟机里,许多服务需要时才会打开,像Reporting Services需要处理报表时才打开) 注:Analysis Services 登录 ...

随机推荐

  1. [BZOJ 2169]连边

    Description 有N个点(编号1到N)组成的无向图,已经为你连了M条边.请你再连K条边,使得所有的点的度数都是偶数.求有多少种连的方法.要求你连的K条边中不能有重边,但和已经连好的边可以重.不 ...

  2. [测试题]無名(noname)

    Description 因为是蒯的题所以没想好名字,为什么要用繁体呢?去看<唐诗三百首>吧! 题意很简单,给你一个串,求他有多少个不同的子串,满足前缀为A,后缀为B. 需要注意的是,串中所 ...

  3. POJ 1721 CARDS

    Alice and Bob have a set of N cards labelled with numbers 1 ... N (so that no two cards have the sam ...

  4. [洛谷]P3729 曼哈顿计划EX(最小割树/等价流树)

    题目大意:给出一张n个点m条边的无向图,每个点有点权,q次询问,每次给出k,要求选出若干个点点权之和不小于k,求一个最大的值x,使得选出的点中任意两点之间至少有x条互不相交的链.(n<=550, ...

  5. ●BZOJ 1692 [Usaco2007 Dec]队列变换

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1692 题解: 后缀数组,贪心由于每次可以取出旧队列的首部或尾部放在新队列的尾部.所以就需要比 ...

  6. [bzoj4625][BeiJing2016]水晶

    来自FallDream的博客,未经允许,请勿转载,谢谢. 不用惊慌,今天的题都不是小强出的.——融入了无数心血的作品,现在却不得不亲手毁掉,难以体会他的心情啊 .——那也是没有办法的事情,能量共振不消 ...

  7. drool-6.5的自学demo

    先丢代码地址 https://gitee.com/a247292980/drools 再丢pom.xml <project xmlns="http://maven.apache.org ...

  8. Access restriction: The type VerticalTextSpinner is not accessible due to restriction on required library........

    查了下竟然是编译器报错,orz了. Access restriction: 访问限制 on required library: 在依赖库(第三方包) 那就简单了,取消限制就好, eclipse的Win ...

  9. 网站用户身份识别俩大招之cookie

    导航: 原理介绍 代码实现 过程分析 追踪Cookie 原理介绍 众所周知,http协议是无状态的协议,简单理解是用户的前一步操作和后一步操作之间没有关系,互相不知道,不干扰.而在很多场景下,浏览网页 ...

  10. WMI远程启动软件(某个应用程序)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.M ...