ligerUI的Grid的全選隻是一頁的,不是真正的全選,下面改進:
要有兩個開關,一個是記憶功能開關memory,一個是全選中開關allcheck;
一個數組checkedCustomer.
三個方法:
//傳三個參數,allback,memory,checkedCustomer
function f_onCheckAllRow()
{
if(allcheck == 0){
allcheck = 1;//如果點了全選,就不用記憶了,直接傳這個參數到控制器,意味着之前取全部的資料?
memory = 0;
checkedCustomer = [];//如果點了全選,那麼要記憶在全選下點選了反選的
}else if(allcheck == 1){
allcheck = 0;
memory = 1;
checkedCustomer = [];//記憶數組清空是關鍵!
}
}
function findCheckedCustomer(ID)
{
//console.log(checkedCustomer);
for(var i =0;i<checkedCustomer.length;i++)
{
if(checkedCustomer[i] == ID) return i;
}
return -1;
}
function addCheckedCustomer(ID)
{
if(findCheckedCustomer(ID) == -1)
checkedCustomer.push(ID);
}
function removeCheckedCustomer(ID)
{
var i = findCheckedCustomer(ID);
if(i==-1) return;
checkedCustomer.splice(i,1);
}
function f_isChecked(rowdata)
{
var f_flag=0;
if(allcheck == 1){
if(memory == 1 ){
if (findCheckedCustomer(rowdata.ID) == -1){
f_flag = 1;
}else{
f_flag = 0;
}
}else{
f_flag = 1;
}
}else if(memory == 1 ){
if (findCheckedCustomer(rowdata.ID) == -1){
f_flag = 0;
}else{
f_flag = 1;
}
}
return f_flag_ischecked(f_flag);
}
function f_flag_ischecked(f_flag) {
if(f_flag == 1 ){
return true;
}else
return false;
}
function f_onCheckRow(checked, data)
{
if(allcheck == 1){
memory = 1;
if (!checked) addCheckedCustomer(data.ID);
else removeCheckedCustomer(data.ID);
}else{
if (checked) addCheckedCustomer(data.ID);
else removeCheckedCustomer(data.ID);
}
}
當然,還要将allback、memory、checkedCustomer傳到要出來的頁面或控制器
還有,具體比如chekedCustomer要進行分割出來什麼的checkedCustomer.join(',')