easyui 树形表格的初始化

树形表格的初始化

效果图
注意:我这里是随便模拟的数据,所以不用纠结数据不是一样的
在这里插入图片描述

第一点:了解数据库的数据结构
在这里插入图片描述
在这里插入图片描述
说明:在表中数据,主要的是id和父类id,每一个父类id为0的数据都是顶级父类,当某条数据id是其他数据的父类id时,称这个数据是其他数据的父类。


第二点:了解树形表格的所需要的数据类型

     树形表格需要的数据类型可以分为两种,这里先说一种:以字段”_parentId“来区分父类与子类

{"total":9,"rows":[
	{"id":1,"region":"Wyoming"},
	{"id":11,"region":"Albin","_parentId":1},
	{"id":12,"region":"Canon","_parentId":1},
	{"id":13,"region":"Egbert","_parentId":1},
	{"id":2,"region":"Washington"},
	{"id":21,"region":"Bellingham","_parentId":2},
	{"id":22,"region":"Chehalis","_parentId":2},
	{"id":23,"region":"Ellensburg","_parentId":2},
	{"id":24,"region":"Monroe","_parentId":2}
]}

这里可以小小的测试一下,实现树形表格:
      controller控制层返回的数据可以拿上面试一下,如:
在这里插入图片描述
然后html代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
			<link rel="stylesheet" type="text/css" href="../../api/jQueryEasyUI/jquery-easyui-1.3.6/themes/default/easyui.css">
			<link rel="stylesheet" type="text/css" href="../../api/jQueryEasyUI/jquery-easyui-1.3.6/themes/icon.css">
			<link rel="stylesheet" type="text/css" href="../../api/jQueryEasyUI/jquery-easyui-1.3.6/demo/demo.css">
			<link rel="stylesheet" type="text/css" href="../../resource/css/economy-website/job.css">
			<script type="text/javascript" src="../../resource/js/type/type.js"></script>
			<script type="text/javascript" src="../../api/jQueryEasyUI/jquery-easyui-1.3.6/jquery.min.js"></script>
			<script type="text/javascript" src="../../api/jQueryEasyUI/jquery-easyui-1.3.6/jquery.easyui.min.js"></script>
			<script type="text/javascript" src="../../resource/js/linkage/linkage.js"></script>
			<script>
			$(function () {
				$('#tree').treegrid({   
					url:'/category/position/Test',   // 这里是访问控制层的路径
					idField:'id',				// 定义关键字段来标识树节点。(必须的)
					method:'GET',
					treeField:'region',			// 定义树节点字段。(必须的)
					columns:[[   
				    	{field:'checkbox',checkbox:'true'},
				        {title:'编号',field:'id',width:200,align:'center'},
				        {title:'职位名称',field:'region',width:1044,editor:'text'},    
				        {title:'职位排序',field:'sortNumber',width:200,align:'center',sortable: true}
				    ]]
				})
			})	
			</script>
</head>
<body>
	<!--  <table id="myTable" class="mini-treegrid" expandOnLoad="false"></table> -->
	<!--  <a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-add',toggle:true" id="btn_test">Add</a> -->
	 <table id="tree"></table>

</table>
</body>
</html>

效果如下:
在这里插入图片描述
当然在项目中可以拿自定义Result结果集来返回数据,Result结构如下:

public class Result {


	private int code=0;		// 数据是否加载成功
	private String msg;		// 数据加载后的消息
	private int total;		//数据总数
	private Object obj;		// 存放数据
	private List rows;		// 存放数据
	public int getCode() {
		return code;
	}
	public void setCode(int code) {
		this.code = code;
	}
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	public int getTotal() {
		return total;
	}
	public void setTotal(int total) {
		this.total = total;
	}
	public Object getObj() {
		return obj;
	}
	public void setObj(Object obj) {
		this.obj = obj;
	}
	public List getRows() {
		return rows;
	}
	public void setRows(List rows) {
		this.rows = rows;
	}
}	

第二点:了解树形表格的所需要的数据类型
     第二种树形表格返回的类型是根据"children"来进行区分父子类的

[{
	"id":1,
	"name":"C",
	"size":"",
	"date":"02/19/2010",
	"children":[{
		"id":2,
		"name":"Program Files",
		"size":"120 MB",
		"date":"03/20/2010",
		"children":[{
			"id":21,
			"name":"Java",
			"size":"",
			"date":"01/13/2010",
			"state":"closed",
			"children":[{
				"id":211,
				"name":"java.exe",
				"size":"142 KB",
				"date":"01/13/2010"
			},{
				"id":212,
				"name":"jawt.dll",
				"size":"5 KB",
				"date":"01/13/2010"
			}]
		},{
			"id":22,
			"name":"MySQL",
			"size":"",
			"date":"01/13/2010",
			"state":"closed",
			"children":[{
				"id":221,
				"name":"my.ini",
				"size":"10 KB",
				"date":"02/26/2009"
			},{
				"id":222,
				"name":"my-huge.ini",
				"size":"5 KB",
				"date":"02/26/2009"
			},{
				"id":223,
				"name":"my-large.ini",
				"size":"5 KB",
				"date":"02/26/2009"
			}]
		}]
	},{
		"id":3,
		"name":"eclipse",
		"size":"",
		"date":"01/20/2010",
		"children":[{
			"id":31,
			"name":"eclipse.exe",
			"size":"56 KB",
			"date":"05/19/2009"
		},{
			"id":32,
			"name":"eclipse.ini",
			"size":"1 KB",
			"date":"04/20/2010"
		},{
			"id":33,
			"name":"notice.html",
			"size":"7 KB",
			"date":"03/17/2005"
		}]
	}]
}]
// 这个数据类型是对象数组来着,然后对象里面再有数组。

我这里直接上之前写过的一个获取这种数据类型的的例子吧,就不拿上面的这种了

// 编辑测试(个人测试)
			@ResponseBody
			@GetMapping("/Test")
			private List Test(){
			// categoryJobService是指向service层的引用
				Result queryTop = categoryJobService.queryTop( );			// 获取所有的一级类别
				List<CategoryPositionEntity> rows1 = queryTop.getRows();	// 传到Result结果集的rows字段中
				List<TreeData> list = new ArrayList<TreeData>();
					
					for (CategoryPositionEntity categoryPositionEntity : rows1) {	// 这里是将一级类别循环放入TreeData实体类中,再存入list数组
						TreeData treeData = new TreeData();
						treeData.setId(categoryPositionEntity.getIdPosition());
						treeData.setRegion(categoryPositionEntity.getPositionName());
						treeData.setSortNumber(categoryPositionEntity.getPositionSort());
						treeData.setState("closed");			// 这个是初始化默认不展示该节点的子节点
						treeData.setIconCls("icon-add");		// 这个是修改树形表格默认的图标
						list.add(treeData);
					}
				
				for (TreeData treeData : list) {				// 循环一级类别的数组
					List<TreeData> list1 = new ArrayList<TreeData>();	// 创建一个存二级类别的数组
					// 这个是根据一级类别的id返回该一级类别下所有的二级类别数组
					List<CategoryPositionEntity> rows2 = categoryJobService.queryTwo(treeData.getId()+"").getRows();	
					if(rows2.size() != 0) {		// 判段出一级类别下是否存有二级类别
						for (CategoryPositionEntity categoryPositionEntity : rows2) {	// 循环二级类别数组并将每条数据存入指定实体类,然后在存入数组
							TreeData treeData1 = new TreeData();
							treeData1.setId(categoryPositionEntity.getIdPosition());
							treeData1.setRegion(categoryPositionEntity.getPositionName());
							treeData1.setSortNumber(categoryPositionEntity.getPositionSort());
							treeData1.setState("closed");		// 这个是初始化默认不展示子节点,只展示父节点
							list1.add(treeData1);
						}
					}else {
						treeData.setState("");			
					}
					treeData.setChildren(list1);		// 将二级类别的数组存入到对应的一级类别中实体类的children字段中
					if(treeData.getChildren().size()!=0) {	// 下面不说了,和一级类别存入二级类别是一样的,不过就是二级存入三级
						List<TreeData> children = treeData.getChildren();
						for (TreeData treeData2 : children) {
							List<CategoryPositionEntity> rows3 = categoryJobService.queryTwo(treeData2.getId()+"").getRows();
							if(rows3.size() == 0) {
								treeData2.setState("");
							}
							List<TreeData> list2 = new ArrayList<TreeData>();
							for (CategoryPositionEntity categoryPositionEntity : rows3) {
								 TreeData treeData3 = new TreeData();
								 treeData3.setId(categoryPositionEntity.getIdPosition());
								 treeData3.setRegion(categoryPositionEntity.getPositionName());
								 treeData3.setSortNumber(categoryPositionEntity.getPositionSort());
								 list2.add(treeData3);
							}
							treeData2.setChildren(list2);
						}
					}
				}
				
			
				return list;
			}
			// 注意上面的代码看看就好了,不要复制

TreeData实体类

@Data
public class TreeData {
	private int id;
	private String region;
	private int sortNumber;
	private List children;
	private String state;
	private String iconCls;
}

然后是html代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
			<link rel="stylesheet" type="text/css" href="../../api/jQueryEasyUI/jquery-easyui-1.3.6/themes/default/easyui.css">
			<link rel="stylesheet" type="text/css" href="../../api/jQueryEasyUI/jquery-easyui-1.3.6/themes/icon.css">
			<link rel="stylesheet" type="text/css" href="../../api/jQueryEasyUI/jquery-easyui-1.3.6/demo/demo.css">
			<link rel="stylesheet" type="text/css" href="../../resource/css/economy-website/job.css">
			<script type="text/javascript" src="../../resource/js/type/type.js"></script>
			<script type="text/javascript" src="../../api/jQueryEasyUI/jquery-easyui-1.3.6/jquery.min.js"></script>
			<script type="text/javascript" src="../../api/jQueryEasyUI/jquery-easyui-1.3.6/jquery.easyui.min.js"></script>
			<script type="text/javascript" src="../../resource/js/linkage/linkage.js"></script>
			<script>
			$(function () {
				$('#tree').treegrid({   
					url:'/category/position/Test',   
					idField:'id',
					method:'GET',
					treeField:'region',
					columns:[[   
				    	{field:'checkbox',checkbox:'true'},
				        {title:'编号',field:'id',width:200,align:'center'},
				        {title:'职位名称',field:'region',width:1044,editor:'text'},    
				        {title:'职位排序',field:'sortNumber',width:200,align:'center',sortable: true}
				    ]]
				})
				$('#myTable').treegrid({    
				    url:'/category/position/Test',    
				    idField:'id',    
				    treeField:'region',
				    method:'GET',
				    state:"closed",
				    pagination:true, 
				    singleSelect:false,
				    sortName:'sortNumber',
				   	sortOrder:'asc',
				    remoteSort:false,
				    columns:[[   
				    	{field:'checkbox',checkbox:'true'},
				        {title:'编号',field:'id',width:200,align:'center'},
				        {title:'职位名称',field:'region',width:1044,editor:'text'},    
				        {title:'职位排序',field:'sortNumber',width:200,align:'center',sortable: true,editor:'text'}
				    ]]
				})
				
	
			})
			
				
			</script>
</head>
<body>
	<table id="myTable" class="mini-treegrid" expandOnLoad="false"></table>
	<!--  <a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-add',toggle:true" id="btn_test">Add</a> -->


</table>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/wufewu/article/details/85175503