treegrid 的使用介绍

最近在项目开发中使用easyuide treegrid插件,下面将结合项目来介绍下自己的使用心得。

使用到treegrid插件的是权限管理模块,主要功能还是crud,首先在使用easyui时要引入相应的jar包

1、页面显示

注意事项:

1、数据库设计时要有pid的字段来关联到父记录,父级的pid可以为null;

2、实体类设计时要添加_parentId字段,网上介绍的其他字段,例如stats、iconcls等可以不添加;

3、前台接收的数据必须要是json类型的且必须包含‘’rows",网上有介绍“total”等,可以不包含(本人的json里就没有封装total),我是这样操作的直接在controller层封装成

Map<String,Object>,key就是rows,Value是你想要展示的信息。如下图:

2、页面代码:

                                                                                                            
<table id="treetable" class="easyui-treegrid" title="权限管理" style="width:auto;height:400px" data-options="   
iconCls: 'icon-ok',                                                                                         
url:'${CONTEXT_PATH }/Auth/listAuthority.dhtml',                                                            
rownumbers: true,                                                                                           
animate: true,                                                                                  
collapsible: true,                                                                              
fitColumns: true,                                                                               
fit:true,                                                                                       
method: 'get',                                                                                  
idField: 'id',                                                                                  
treeField: 'authName',                                                                          
showFooter: true                                                                                
">                                                                                             
<thead>                                                                                             
<tr>                                                                                            
<th data-options="field:'authName',width:300,editor:'text',align:'center'">权限名称</th>            
<th data-options="field:'module',width:300,editor:'text',align:'center'">所属模块</th>  

</thead>   

treegrid属性解释:url:初始化时数据展示要请求路径;

animate:折叠或者展开时候的动画显示(true,有过渡效果) 

collapsible:能否折叠

idField:这是隐藏在网络表格里面的属性,此处的id为我需要显示的数据的id

treeField:是指在哪什么属性可以折叠,我在这里设置的是权限名称处。

其他的属性可以自行查询,在文章的尾页会贴上官方API

3、功能键代码:

3.1、修改

                                                                   
var editingId;                                                     
//修改                                                               
function edit(){                                                   
if (editingId != undefined){                                   
$('#treetable').treegrid('select', editingId);             
return;                                                    
}                                                              
var row = $('#treetable').treegrid('getSelected');             
if (row){                                                      
editingId = row.id                                         
$('#treetable').treegrid('beginEdit', editingId);          
}else{                                                         
$.messager.alert("提示信息","未选中任何数据,不能进行编辑");                 
}                                                              
}                                                                  

3.2、删除

function remove(){                                                                                
if (editingId != undefined){                                                                  
$('#treetable').treegrid('select', editingId);                                            
return;                                                                                   
}                                                                                             
var row=$('#treetable').treegrid("getSelected");                                              
if(row==null){                                                                                
$.messager.alert("提示信息","未选中任何数据,不能进行删除");                                                
}                                                                                             
if(row){                                                                                      
if(row._parentId==null){                                                                  
$.messager.confirm("确认信息","确定删除将连同子权限一起删除",function(result){                          
if(result){                                                                       
$('#treetable').treegrid("remove",row.id);                                    
//去数据库删除数据                                                                    
realRemove(row);                                                              
}                                                                             
})                                                                                    
                                                                                      
}else{                                                                                    
$.messager.confirm("确认信息","确定要删除吗?",function(result){                                 
if(result){                                                                       
$('#treetable').treegrid("remove",row.id);                                        
//去数据库删除数据                                                                        
realRemove(row);                                                                  
}                                                                                 
});                                                                                   
}                                                                                         
}                                                                                             
                                                                                              
function realRemove(row){                                                                     
$.ajax({                                                                                  
data:'id='+row.id,                                                                    
url:'${CONTEXT_PATH}/Auth/removeAuthById.dhtml',                                      
success:function(data){                                                               
$.messager.alert("提示信息",data.data);                                               
}                                                                                     
})                                                                                        
}                                                                                             

3.3、增加

function add(){                                                                   
if (editingId != undefined){                                                  
$('#treetable').treegrid('select', editingId);                            
return;                                                                   
}                                                                             
var row = $('#treetable').treegrid('getSelected');                            
if(row==null){                                                                
$.messager.alert("提示信息","至少选择一个模块才能添加权限");                                
}                                                                             
var id=Math.ceil((Math.random()*1000));//0-1000里面随机产生一个id号                    
var now=new Date();                                                           
var year=now.getFullYear();                                                   
var month=now.getMonth()+1;                                                   
var day=now.getDate();                                                        
var hours=now.getHours();                                                     
var minutes=now.getMinutes();                                                 
var seconds=now.getSeconds();                                                 
if (month >= 1 && month <= 9) {                                               
        month = "0" + month;                                                      
    }                                                                             
if (hours<= 9) {                                                              
hours = "0" + hours;                                                      
    }                                                                             
    if (minutes >= 0 && minutes <= 9) {                                           
    minutes = "0" + minutes;                                                  
    }                                                                             
    if (seconds <= 9) {                                                           
    seconds = "0" + seconds;                                                  
    }                                                                             
var date=""+year+"-"+month+"-"+day+"   "+hours+":"+minutes+":"+seconds+"";    
$('#treetable').treegrid('append', {                                          
parent: row.id,                                                           
data:[ {                                                                  
id:id,                                                                
authName:'',                                                          
module:row.authName,                                                  
aliases:'',                                                           
createTime:date                                                       
}]                                                                        
});                                                                           
editingId=id;                                                                
if (editingId != null){                                                       
        $('#treetable').treegrid('select', editingId);                            
    }                                                                             
    $('#treetable').treegrid('beginEdit', editingId);                             
                                                                                  

3.4、保存

function save(){                                                         
if (editingId != undefined){                                         
$('#treetable').treegrid('endEdit', editingId);                  
var data=$('#treetable').treegrid("find",editingId);             
//如果权限名称或者别名没有输入                                                 
if(data.authName==null||data.authName==''){                      
$.messager.alert("提示信息","权限名称不能为空");                         
$('#treetable').treegrid('beginEdit', editingId);            
return;                                                      
}                                                                
if(data.aliases==null||data.aliases==''){                        
$.messager.alert("提示信息","权限别名不能为空");                         
$('#treetable').treegrid('beginEdit', editingId);            
return;                                                      
}                                                                
realSave(data);                                                  
editingId = undefined;                                           
//编辑页面的保存                                                        
function realSave(data){                                         
$.ajax({                                                     
data:data,                                               
url:'${CONTEXT_PATH}/Auth/modifyOrAddAuthById.dhtml',    
success:function(data){                                  
$.messager.alert("提示信息",data.data);                  
//新增或者更新失败需要重新加载页面                                   
if(data.data=="权限别名不能重复"){                           
$('#treetable').treegrid('reload');                  
}                                                    
}                                                        
})                                                           
                                                             
}                                                                
                                                                 
}                                                                    
}                                                                        

3.5、取消

function cancel(){                                              
if (editingId != undefined){                                
//$('#treetable').treegrid('cancelEdit', editingId);    
$('#treetable').treegrid('reload');                     
editingId = undefined;                                  
}                                                           
}                                                               

4、说明:这上面的几点注意的信息就能展示,至于后面的功能操作,本人也在网上查询和借鉴了其他前辈的方法:

5、API


属性
属性扩展自datagrid, 下面是为treegrid新增的属性:

treegrid 的使用介绍

事件
事件扩展自datagrid, 下面是为treegrid新增的事件:

treegrid 的使用介绍
方法treegrid 的使用介绍treegrid 的使用介绍treegrid 的使用介绍