JS实现下拉复选框非顺序选择后的值顺序显示
1. 概述
在报表应用中,会经常用到下拉复选框,但是默认的下拉复选框的值是根据选择的先后顺序来进行显示的,有些情况下用户选择值的顺序不是按照从前到后,这时下拉复选框的值并不会按照备选选来排序,在动态列应用或提交下拉复选框值的时候会看起来比较乱,如下图:

我们需要提交的时候也是按照备选项顺序来显示的,如下效果:

这种效果如何实现呢?
2. 实现思路
利用JS获取下拉复选框所有备选项值,在编辑结束之后,再将当前复选框值按照所有备选框顺序排序一次。
3. 实现过程
(1)打开模板%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Parameter\DynamicCol\DynamicCol1.cpt
(2)为了方便观察最终效果,我们可以将下拉复选框宽度调宽

(3)为下拉复选框设置编辑结束事件

代码如下:
var obj=contentPane.parameterEl.getWidgetByName('col').options.data.options.dataSource.data;
//获取下拉复选框所有备选选
var pArray=[];
$.each(obj,function(i,v){
pArray.push(v.value);
})
//把备选项存入数组pArray
var v=this.getValue()+'';//获取当前值
var cArray=[];
cArray=v.split(',');//分割数组
function isChild(element,index,array){
return cArray.indexOf(element)>=0 ;
}//排序函数
var newArray=pArray.filter(isChild);//将排序后的数组存入新数组
this.setValue(newArray.toString());//数组转字符串,并设置到下拉复选框中
(4)保存预览,最终效果如上图
附件列表
主题: 二次开发
标签:
已验证

