• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

EASYUI treegrid singleSelect设置为false,如何实现单选的功能

互联网 diligentman 2周前 (10-15) 21次浏览

对于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 ;
}

 


喜欢 (0)