EASYUI treegrid singleSelect設置爲false,如何實現單選的功能

對於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 ;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章