JQueryEasyui同步生成tree,在后台直接拼接完成树

效果图



--自定义tree实体

package com.easyui.domin;


import java.util.ArrayList;
import java.util.List;
/**
 * 自定义自己拼接的树需要的属性
 * @author Administrator
 *
 */
public class VehicleTree {
private String id;
private String pid;
private String state;//用来设置是否默认展开根节点   state:节点状态,'open' 或 'closed'。
private String iconCls;//设置图片
private String text;//设置显示的内容
private boolean checked;
private String attributes;

private List<Object> children=new ArrayList<Object>();

public List<Object> getChildren() {
return children;
}
public void setChildren(List<Object> children) {
this.children = children;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getIconCls() {
return iconCls;
}
public void setIconCls(String iconCls) {
this.iconCls = iconCls;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public String getAttributes() {
return attributes;
}
public void setAttributes(String attributes) {
this.attributes = attributes;
}


}


--生成树的核心的处理方法


package com.easyui.service;


import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;


import net.sf.json.JSONArray;


import com.easyui.db.ConnectionPool;
import com.easyui.domin.VehicleTree;
/**
 * JqueryEasyUI后台生成整棵树
 * 背景:生成车队和车的树
 * 车队相当于根  车辆相当于叶子
 * 效果:
 * 根车队
 * ---第一子车队
 * ---第一子车队下的车车队
 *       ---第一子车队下的车车队对应的车辆
 * ---第一子车队下的车辆
 * ---第二子车队
 * ---第二子车队下的车车队
 *       ---第二子车队下的车车队对应的车辆
 * ---第二子车队下的车辆
 *
 * @author Administrator
 *
 */
public class TreeService {
private ConnectionPool cp=ConnectionPool.getInstance();
//拼接树结构
public List<VehicleTree> getVehicleTree() throws Exception{
Connection con=cp.getConnection();
Statement sts=con.createStatement();
//获取树的根
String sql="SELECT A.VEHICLE_GROUP_ID AS \"id\", "+
       " A.VEHICLE_GROUP_NAME AS \"text\", "+
       " A.PARENT_VEHICLE_GROUP_ID AS \"pid\" "+
       " FROM VEHICLE_GROUP_T A "+
       " WHERE A.VEHICLE_GROUP_ID=1  AND A.DELETE_FLAG != 1 "+
       " AND A.TENANT_ID =1";
ResultSet rs=sts.executeQuery(sql.toString());
cp.releaseConnection(con);
List<VehicleTree> treeList=new ArrayList<VehicleTree>();
while(rs.next()){
VehicleTree vTree=new VehicleTree();
vTree.setText(rs.getString("text"));
vTree.setId(rs.getString("id"));
vTree.setPid(rs.getString("pid"));
treeList.add(vTree);
}
List<VehicleTree> trees = new ArrayList<VehicleTree>();
if(treeList!=null && treeList.size()>0){
for(int i=0;i<treeList.size();i++){
VehicleTree vTree=getChildren(treeList.get(i));//不在children集合里面直接放list集合是因为拼接JSON的需要
vTree.setState("closed");//默认根是收缩的
trees.add(vTree);
}
}
return trees;
}

//递归获取子车队和挂车辆
public VehicleTree getChildren(VehicleTree vTree) throws Exception{
if(vTree==null){
return null;
}
//挂车
List<VehicleTree> vehicle=this.getVehicle(vTree.getId());
if(vehicle!=null && vehicle.size()>0){
for(int i=0;i<vehicle.size();i++){
vTree.getChildren().add(vehicle.get(i));
}
}
//挂子车队
List<VehicleTree> vehicleGroup=this.getVehicleGroup(vTree.getId());
if(vehicleGroup!=null && vehicleGroup.size()>0){//说明有子车队  
vTree.setState("closed");//有子车队时设置默认树收缩
for(int i=0;i<vehicleGroup.size();i++){
VehicleTree childVehicleGroup=getChildren(vehicleGroup.get(i));//递归
if(childVehicleGroup!=null){
vTree.getChildren().add(vehicleGroup.get(i));//给这个节点挂子节点
}
}
}
return vTree;
}


//获取车队数据
public List<VehicleTree> getVehicleGroup(String vehicleGroupId) throws Exception{
Connection con=cp.getConnection();
Statement sts=con.createStatement();
String sql="SELECT A.VEHICLE_GROUP_ID AS \"id\", "+
       " A.VEHICLE_GROUP_NAME AS \"text\", "+
       " A.PARENT_VEHICLE_GROUP_ID AS \"pid\" "+
       " FROM VEHICLE_GROUP_T A "+
       " WHERE A.PARENT_VEHICLE_GROUP_ID="+vehicleGroupId+" AND A.DELETE_FLAG != 1 "+
       " AND A.TENANT_ID =1";
ResultSet rs=sts.executeQuery(sql.toString());
cp.releaseConnection(con);
List<VehicleTree> treeList=new ArrayList<VehicleTree>();
while(rs.next()){
VehicleTree vTree=new VehicleTree();
vTree.setText(rs.getString("text"));
vTree.setId(rs.getString("id"));
vTree.setPid(rs.getString("pid"));
treeList.add(vTree);
}
return treeList;
}


//获取车辆数据
public List<VehicleTree> getVehicle(String vehicleGroupId) throws Exception{
Connection con=cp.getConnection();
Statement sts=con.createStatement();
String sql="SELECT A.VEHICLE_ID AS \"id\", "+
       " A.ADMIN_CODE AS \"text\", "+
       " A.VEHICLE_GROUP_ID AS \"pid\" "+
       " FROM VEHICLE_T A "+
       " WHERE A.VEHICLE_GROUP_ID="+vehicleGroupId+" AND A.DELETE_FLAG != 1 "+
       " AND A.TENANT_ID =1";
ResultSet rs=sts.executeQuery(sql.toString());
cp.releaseConnection(con);
List<VehicleTree> treeList=new ArrayList<VehicleTree>();
while(rs.next()){
VehicleTree vTree=new VehicleTree();
vTree.setText(rs.getString("text"));
vTree.setId(rs.getString("id"));
vTree.setPid(rs.getString("pid"));
treeList.add(vTree);
}
return treeList;
}

public static void main(String[] args) throws Exception {
TreeService tService=new TreeService();
List<VehicleTree> list=tService.getVehicleTree();
String str=JSONArray.fromObject(list).toString();
System.out.println(str);
}
}


--jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../head.jsp"></jsp:include>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<script type="text/javascript">
$(function(){
$("#t").tree({
url:'tree02.json',
checkbox: true,
lines:true,
onContextMenu:function(e, node){
//alert(node);
var leafs=$("#t").tree('isLeaf', node.target);//可以通过判断是否为叶子节点来决定是否开启菜单
console.log(leafs);
if(leafs){
e.preventDefault();
$('#mm').menu('show', {
left: e.pageX,
top: e.pageY
});
}
}

});
});
function menuHandler(item){
var node=$('#t').tree('getSelected');//获取选中的节点
var roots=$('#t').tree('getRoot');//获取选中的节点

}
</script>
<body>
<ul id="t"></ul>
<div id="mm" class="easyui-menu" data-options="onClick:menuHandler" style="width:120px;">
<div  data-options="iconCls:'icon-add'">追加</div>
<div  data-options="iconCls:'icon-remove'">移除</div>
</div>
</body>
</html>








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值