帆软报表实现全选全不选的功能
新建checkbox.js(代码如下),放到WebReport目录下,方便调用;
然后新建一些多选框,分别设置每个多选框的“初始化后”、“状态改变”事件,事件中引用该checkbox.js的init()、change()的方法。
/*
finereport的js说明:
参数界面获取控件方法:
var obj = obj.options.form.getWidgetByName('orgid');
obj.getName() 获取控件名
obj.setValue() 设置控件值
obj.getValue() 获取控件值
复选框组控件:值为所有选中的复选框的值的拼接,中间以英文逗号隔开。
*/
//初始化复选框,将其放置到window.lineboxes数组中
function init(obj){
if(!window.lineboxes){
window.lineboxes = [];
}
lineboxes[lineboxes.length] = obj;
}
function initCheckboxGroup(obj){
obj.setValue('3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34');
}
/*
分行 '4,5,6,7,8,23'
银行 '9,10,11,12,13,14,15,16,17,18,33'
行 '19,20,21,22,24'
行 '25,26,34', 不包括'35'
银行 '27,28,29,30,31,32'
*/
//所有复选框和复选框组只要有一个未选择时,设置‘全选’不选中,否则设置‘全选’不选中
function change(obj){
var orgids = obj.options.form.getWidgetByName('ORGID').getValue();
if(obj.getValue()==false){
//设置checkAll控件的值,当前复选框未选择时,设置全选不选中
obj.options.form.getWidgetByName('checkAll').setValue(false);
//设置ORGID复选框组控件的值
orgids = ','+orgids+',';
if(obj.getName()=='DXYHCZFH'){
orgids = orgids.replace(',4,',',').replace(',5,',',').replace(',6,',',').replace(',7,',',').replace(',8,',',').replace(',23,',',');
}else if(obj.getName()=='GFZSYYH'){
orgids = orgids.replace(',9,',',').replace(',10,',',').replace(',11,',',').replace(',12,',',').replace(',13,',',').replace(',14,',',').replace(',15,',',').replace(',16,',',').replace(',17,',',').replace(',18,',',').replace(',33,',',');
}else if(obj.getName()=='CSH'){
orgids = orgids.replace(',19,',',').replace(',20,',',').replace(',21,',',').replace(',22,',',').replace(',24,',',');
}else if(obj.getName()=='NSH'){
orgids = orgids.replace(',25,',',').replace(',26,',',').replace(',34,',',');
}else if(obj.getName()=='CZYH'){
orgids = orgids.replace(',27,',',').replace(',28,',',').replace(',29,',',').replace(',30,',',').replace(',31,',',').replace(',32,',',');
}
orgids = orgids.length==1?null:orgids.substring(1,orgids.length-1);
}else{
//设置checkAll控件的值
var allChecked=true;
//循环判断所有复选框都选中时,将全选复选框选中
for(var i=0;i<lineboxes.length;i++){
if(lineboxes[i].getValue()==false){
allChecked=false;
break;
}
}
obj.options.form.getWidgetByName('checkAll').setValue(allChecked);
//设置orgid复选框组控件的值
if(obj.getName()=='DXYHCZFH'){
orgids = orgids + (orgids.length==0 ? '':',') + '4,5,6,7,8,23';
}else if(obj.getName()=='GFZSYYH'){
orgids = orgids + (orgids.length==0 ? '':',') + '9,10,11,12,13,14,15,16,17,18,33';
}else if(obj.getName()=='CSH'){
orgids = orgids + (orgids.length==0 ? '':',') + '19,20,21,22,24';
}else if(obj.getName()=='NSH'){
orgids = orgids + (orgids.length==0 ? '':',') + '25,26,34';
}else if(obj.getName()=='CZYH'){
orgids = orgids + (orgids.length==0 ? '':',') + '27,28,29,30,31,32';
}
}
obj.options.form.getWidgetByName('ORGID').setValue(orgids);
//alert(obj.options.form.getWidgetByName('ORGID').getValue());
}
//全选,全不选
function selectAllorNone(obj){
var flag = obj.getValue();
//获取当前复选框控件的状态:true/false
for(var i=0;i<window.lineboxes.length;i++){
window.lineboxes[i].setValue(flag);
//alert("window.lineboxes[i].options.value === "+window.lineboxes[i].options.value);
//alert("window.lineboxes[i].value==="+window.lineboxes[i].value);
//循环遍历每个复选框控件
//var cr = FR.cellStr2ColumnRow(window.lineboxes[i].options.location);
//由每个控件位置获取行号列号,并逐一赋值当前状态
//_g().setCellValue(cr.col,cr.row,flag);
}
if(flag){
obj.options.form.getWidgetByName('ORGID').setValue('3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34');
}else{
obj.options.form.getWidgetByName('ORGID').setValue(null);
}
}