對於easyui 的treegrid,如果數量兩大的時候,設置singleSelect:false可以對速度起到一定的優化作用,具體實現如下:
//設置選中行的集合
var prevSelectedRowArr = new Array();
//在頁面加載完之後,初始化樹的時候這麼做:
$(function(){
$('#xmzj').treegrid({
singleSelect:false,
onSelect:function(rowData){
//不重複添加選中行
if(!isHasObj(prevSelectedRowArr, rowData)){
prevSelectedRowArr.push(rowData);
}
//設置當前行選中,取消其他行選中狀態
setSingleSelectFun(rowData);
},
onUnselect:function(rowData){
//如果取消選中的行是要求選中的,那麼就不取消選中狀態,這個主要是因爲singleSelect:false的
//的情況下,如果被選中的行再次被單擊,會取消選中狀態;爲singleSelect:true,則不會這樣,現在
//也要實現如果單擊選中行,不取消選中狀態
if(prevSelectedRowArr[0].id == rowData.id){
$('#xmzj').treegrid('select',rowData.id);
}
},
})
})
//設置單選
function setSingleSelectFun(rowData){
setTimeout(function(){
for(var i = prevSelectedRowArr.length - 1 ;i >= 0;i--){
var temp = prevSelectedRowArr[i];
if(temp.id != rowData.id){
prevSelectedRowArr.splice(i, 1);
$('#xmzj').treegrid('unselect',temp.id);
}
}
},1);
}
//判斷數組是否含有該元素,如果存在,返回爲true
function isHasObj(arr, obj){
var flag = false; // true爲有 false爲沒有
for(var i=0; i<arr.length; i++) {
if(obj.id == arr[i].id){
flag = true;
}
}
return flag ;
}