帆軟報表實現全選全不選的功能


新建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);
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM