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