帆软报表实现全选全不选的功能

新建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);
	}
}
原文地址:https://www.cnblogs.com/mediocreWorld/p/15188730.html