首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

ext 靠山查数据库数据拼装tree数据

2012-10-28 
ext 后台查数据库数据拼装tree数据来自:Extjs交流群(164648099)?说明:两个文件jackyNode.java? treeVO对象

ext 后台查数据库数据拼装tree数据

来自: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(){//构造方法里初始化模拟ListjackyNode 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()));      }  }

?

?

1 楼 xyang81 2011-04-08   学习了。。。。正在想怎么找出父节点下有哪些子节点。。。。

热点排行