`

分享zk Tree递归实现(只有分享,才能更有人气)

zk 
阅读更多

ZK 中的Tree可以实现递归调用,该方法可以实现无限级次的分类,如ERP中的物料分类,人力资源中的组织架构分级等.

1、数据库设计中一般如下:ID,NAME,parentid,level,其中parentid就是指上级的ID(parent--id)引用。

2、下面list就是第一层应查询出来的数据库列表,也是树的第一层数据。接下来就是创建列表的表头数据。 

public Tree createTree(String name, List<?> list) {
                Tree tree = new Tree();
                tree.setHeight("500px");
                Treecols treecols = new Treecols();
                Treecol treecol = new Treecol(name);
                treecol.setParent(treecols);
                treecols.setParent(tree);
               Treechildren firstChild = new Treechildren();

               //下面语句中的方法就递归调用的主要实现方法
                tree.appendChild(AddTreeItem(firstChild, list));
                return tree;
       }

3、递归实现方法

public Treechildren AddTreeItem(Treechildren child, List list) {  
  for (Iterator<?> iter = list.iterator(); iter.hasNext();) {

        //list数据转换为部门数据
        Depart depart = (Depart) iter.next();

        //通过部门ID获取下属部门列表数据
        List<?> row = getCompentList(depart.getFid());

        //创建树的行信息
        Treeitem firstItem = new Treeitem();
        firstItem.setValue(depart.getFid());
        Treerow firstRow = new Treerow();
        Treecell firstCell = new Treecell(depart.getFname());
        firstCell.setParent(firstRow);
        firstRow.setParent(firstItem);
        firstItem.setParent(child);

        //判断有下属部门,则创建第二层实现递归调用
         if (row.size() > 0){

             Treechildren secondchild = new Treechildren();
             firstItem.appendChild(AddTreeItem(secondchild, row));

             }
         }
      return child;
 }

4、在你的页面上这现实就可以了,调用这个方法。

public void refshTree() {
  unit_center.getChildren().clear();
  String name = new String("所有单位");
  unit_west.getChildren().clear();
  unit_tree.getChildren().clear();
  unit_tree = createTree(name, getDepartList());
  unit_tree.setParent(unit_west);
 }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics