来自:Extjs交流群(164648099)
说明:
两个文件
jackyNode.java treeVO对象 将数据库当中的树的数据库存入此
jackytree.java 采用递归算法 将一次性查出来的数据生成treeJSON结构
直接将两个文件复制到eclipse中 run as即可查看
jackyNode.java
package com.codeasy.common;
public class jackyNode {
private int id;
private int parentId;
private String text;
jackyNode(){}
jackyNode(int id,int parentId,String text){
this.id=id;
this.parentId = parentId;
this.text = text;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getParentId() {
return parentId;
}
public void setParentId(int parentId) {
this.parentId = parentId;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
jackytree.java
package com.codeasy.common;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
* 数据库中的表结构是这样的
* id parentid name
*
*
*
*/
public class jackytree {
List nodeList =new ArrayList();
jackytree(){//构造方法里初始化模拟List
jackyNode node1 = new jackyNode(1,0,"根节点");
jackyNode node2 = new jackyNode(2,1,"一级菜单");
jackyNode node3 = new jackyNode(3,1,"一级菜单");
jackyNode node4 = new jackyNode(4,2,"二级菜单");
jackyNode node5 = new jackyNode(5,2,"二级菜单");
jackyNode node6 = new jackyNode(6,2,"二级菜单");
jackyNode node7 = new jackyNode(7,6,"三级菜单");
jackyNode node8 = new jackyNode(8,6,"三级菜单");
nodeList.add(node1);
nodeList.add(node2);
nodeList.add(node3);
nodeList.add(node4);
nodeList.add(node5);
nodeList.add(node6);
nodeList.add(node7);
nodeList.add(node8);
}
StringBuffer returnStr=new StringBuffer();
public void recursionFn(List list , jackyNode node){
if(hasChild(list,node)){
returnStr.append("{id:");
returnStr.append(node.getId());
returnStr.append(",text:'");
returnStr.append(node.getText());
returnStr.append("'");
returnStr.append(",children:[");
List childList = getChildList(list,node);
Iterator it = childList.iterator();
while(it.hasNext()){
jackyNode n = (jackyNode)it.next();
recursionFn(list,n);
}
returnStr.append("]},");
}else{
returnStr.append("{id:");
returnStr.append(node.getId());
returnStr.append(",text:'");
returnStr.append(node.getText());
returnStr.append("'");
returnStr.append(",leaf:true},");
}
}
public boolean hasChild(List list, jackyNode node){ //判断是否有子节点
return getChildList(list,node).size()>0?true:false;
}
public List getChildList(List list , jackyNode node){ //得到子节点列表
List li = new ArrayList();
Iterator it = list.iterator();
while(it.hasNext()){
jackyNode n = (jackyNode)it.next();
if(n.getParentId()==node.getId()){
li.add(n);
}
}
return li;
}
public String modifyStr(String returnStr){//修饰一下才能满足Extjs的Json格式
return ("["+returnStr+"]").replaceAll(",]", "]");
}
public static void main(String[] args) {
jackytree r = new jackytree();
r.recursionFn(r.nodeList, new jackyNode(1,0,"根节点"));
System.out.println(r.modifyStr(r.returnStr.toString()));
}
}
分享到:
相关推荐
自己整理的 Ext与后台数据库交互 资料。
Ext框架学习,包括登录,以及登录后主页面的显示,采用美观的布局,一句对后台数据的增删改查,通过Ajax dwr异步获得数据和对store多种请求方式的分析,很适合初学者。欢迎下载
NULL 博文链接:https://penggle.iteye.com/blog/803350
通过java 访问数据库而生成节点 子节点的 ID 与 父节点的关系为“父节点id_子节点id”此id为数据库中的id 同理“父节点id_子节点id_子子节点id”,因此加载树时将node.id做为参数 通过split("_"),根据数据的长度就...
ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询...
自己整理的ext涉及的四种常见的tree 1.一次加载所有结点 2.可拖拽的tree 3.动态加载结点,每次展开结点需向后台获取数据 4.可维护的tree 结点维护
ext 与数据库交互实例 ext 与数据库交互实例 ext 与数据库交互实例
自己编写的EXT例子,grid、tree从数据库读取数据动态显示,并进行分页。可以动态更换主题,并存入cookies中。
EXT后台简单布局,很好的,好用!!!!
该实例给出的例子包括:用ext写了一个可操作各种数据库的数据库管理系统,把数据导出为exel文件等
关于ext的数据交互,从前台获取数据以及从后台提交数据,比较详细和实用
网上下载的用EXT做的数据库管理系统,支持多种数据库,只需要导入连接数据库的JAR包就可以了,只要自己的电脑上有数据库就可以了,呵呵
(.net版本)的仿Ext无限级tree,从数据库加载数据的源码例子
最近项目中需要使用Ext,研究了下Ext,使用Ext显示数据库中内容。
该例子 是对Editgridpanel连接sqlserver数据库 并且进行分页 查询 删除 的操作
java+ext+数据库基础实现增删查改,学习用
实现ext与JSON的数据传递和显示,以及ext树的事件响应
修改了开源项目http://code.google.com/p/jdbexplorer/ DBExplorer是一个B/S架构的Web程序,基于JDBC连接数据库服务。它采用Extjs构建GUI,因此也具有和C/S程序一样良好的使用体验
自己搜集的几个不错的后台模板 有非常绚丽的使用Ext做的,也有使用Css+JS做的 有清爽简单的,有漂亮大方的,也有绚丽酷帅的,大家可以根据自己的需要下载参观学习
Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载Ext-tree加载