Extjs,实现树形结构的总结

工作总结,用extjs、mybatis、springMVC实现树形显示班级

前台extjs实现树形代码如下:

       xtype : ‘combotree‘,
                    fieldLabel : ‘部门名称‘,
                    name : ‘deptId‘,
                    hiddenName : ‘deptId‘,
                    allowBlank : false,
                    width:235,
                    tree : new Ext.tree.TreePanel({
                                root : {
                                    expanded : true,
                                    id : ‘root‘
                                },
                                loader : new Ext.tree.TreeLoader({
                                            dataUrl : ‘dept/getDeptList‘
                                        }),
                                animate : true,
                                enableDD : true,
                                autoScroll : true,
                                height:400,
                                rootVisible : true
                            }),
                    listeners : {
                            select : function(combotree){
                                }
                            },
                            scope : this
                        }

后台,controller代码

/**
     * 查找带check的部门树
     *
     * @return
     */
    @RequestMapping(value="/getDeptList",method = RequestMethod.POST)
    @ResponseBody
    public List<Tree> getDeptList() {
        Criteria criteria = new Criteria();
        return gradeCourseService.getDeptList(criteria);
    }

dao层代码:

/**
     *
     * 方法描述 : 查询部门
     * @param criteria
     * @return list<Dept>集合
     */
    List<Dept>  getDeptList(Criteria criteria);

dao对应的mapper查询代码:

<!-- 查询学生部门 -->
    <select id="getDeptList" parameterType="Criteria" resultMap="depetMap">
        select
           a.dept_id deptId,
           a.dept_Name deptName,
           a.leaf leaf,
           b.dept_id deptPartpId,
           b.dept_name deptPartName
        from spauth.base_dept a,spauth.base_dept b
        where
            a.dept_type = ‘2‘
        and

a.dept_id = b.dept_pid
        order
            by a.dept_id asc,
            b.dept_Id asc
    </select>
    <!-- 树叶模型 -->
    <resultMap type="cn.edu.hbcf.privilege.pojo.Dept" id="depetMap">
          <id property="deptId" column="deptId"/>
          <result property="deptName" column="deptName"/>
          <result property="leaf" column="leaf"/>
          <collection property="children" ofType="cn.edu.hbcf.privilege.pojo.Dept">
              <id property="deptId" column="deptPartpId"/>
              <result property="deptName" column="deptPartName"/>
          </collection>
      </resultMap>

service层代码:

/**
     * 获取部门下拉框列表
     * @return
     */
    List<Tree> getDeptList(Criteria criteria);

service层实现类代码:

public List<Tree> getDeptList(Criteria criteria) {
        List<Tree> resultTree = new ArrayList<Tree>();
        Tree treeNode = null;
        List<Dept> deptList = gradeCourseMapper.getDeptList(criteria);
        Dept dept = null;
        for(Iterator<Dept> it = deptList.iterator(); it.hasNext();){
            treeNode = new Tree();
            List<Tree> childTree =new ArrayList<Tree>();
            Tree childNode = null;
            Dept chilDept = null;
            dept = it.next();
            if(dept.getDeptName().equals("河北金融学院")){
                continue ;
            }
            treeNode.setText(dept.getDeptName());
            treeNode.setId(dept.getDeptId());
            for(Iterator<Dept> iter = dept.getChildren().iterator(); iter.hasNext();){
                childNode = new Tree();
                chilDept = iter.next();
                childNode.setText(chilDept.getDeptName());
                childNode.setId(chilDept.getDeptId());
                childNode.setLeaf(true);
                childTree.add(childNode);
                treeNode.setChildren(childTree);
            }
//            if(treeNode.getChildren().size()==0){//这是判断系节点是不是没有子节点。如果没有,就让系变为叶子节点。
//                treeNode.setLeaf(true);//变为叶子节点。
//            }
            resultTree.add(treeNode);
        }
        return resultTree;
    }

tree实体类代码:

package cn.edu.hbcf.common.vo;

import java.util.List;

/**
 * ext树菜单
 *
 * @author LiPenghui
 * @date 2012-02-24 19:06:00
 *
 */
public class Tree {

private String id;
    private String name;
    private String text;
    private String iconCls;
    private boolean expanded;
    private boolean leaf;
    private String url;
    private List<Tree> children;

public String getId() {
        return id;
    }

public void setId(String id) {
        this.id = id;
    }

public String getName() {
        return name;
    }

public void setName(String name) {
        this.name = name;
    }

public String getText() {
        return text;
    }

public void setText(String text) {
        this.text = text;
    }

public String getIconCls() {
        return iconCls;
    }

public void setIconCls(String iconCls) {
        this.iconCls = iconCls;
    }

public boolean getExpanded() {
        return expanded;
    }

public void setExpanded(boolean expanded) {
        this.expanded = expanded;
    }

public boolean getLeaf() {
        return leaf;
    }

public void setLeaf(boolean leaf) {
        this.leaf = leaf;
    }

public String getUrl() {
        return url;
    }

public void setUrl(String url) {
        this.url = url;
    }

public List<Tree> getChildren() {
        return children;
    }

public void setChildren(List<Tree> children) {
        this.children = children;
    }

}

dept实体类代码:

package cn.edu.hbcf.privilege.pojo;

import java.io.Serializable;
import java.util.List;
/**
 * 部门
 * @author 张周海
 */
public class Dept implements Serializable{
    
    /** 部门Id */
    private String deptId;
    /** 父部门 */
    private Dept parent;
    /** 部门名称 */
    private String deptName;
    /** 部门简介 */
    private String deptComment;
    /** 是否为根节点 0无1有*/
    private int leaf;
    
    /**
     * 显示顺序
     */
    private Integer displayIndex;
    
    /**
     * 是否为系所号
     */
    private Integer deptType;
    
    
    private List<Dept> children;
    
    
    public String getDeptId() {
        return deptId;
    }

public void setDeptId(String deptId) {
        this.deptId = deptId;
    }

public String getDeptName() {
        return deptName;
    }

public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

public String getDeptComment() {
        return deptComment;
    }

public void setDeptComment(String deptComment) {
        this.deptComment = deptComment;
    }

public int getLeaf() {
        return leaf;
    }

public void setLeaf(int leaf) {
        this.leaf = leaf;
    }

public void setParent(Dept parent) {
        this.parent = parent;
    }

public Dept getParent() {
        return parent;
    }

/**
     * @return the children
     */
    public List<Dept> getChildren() {
        return children;
    }

/**
     * @param children the children to set
     */
    public void setChildren(List<Dept> children) {
        this.children = children;
    }

/**
     * @return the displayIndex
     */
    public Integer getDisplayIndex() {
        return displayIndex;
    }

/**
     * @param displayIndex the displayIndex to set
     */
    public void setDisplayIndex(Integer displayIndex) {
        this.displayIndex = displayIndex;
    }

/**
     * @return the deptType
     */
    public Integer getDeptType() {
        return deptType;
    }

/**
     * @param deptType the deptType to set
     */
    public void setDeptType(Integer deptType) {
        this.deptType = deptType;
    }

}

时间: 2024-10-06 23:17:07

Extjs,实现树形结构的总结的相关文章

Extjs实现树形结构三连选

当项目中需要一个部门人员选择或者省市县地域连选时,就需要树形结构的连选. 再此,写了一个简单的树形结构三连选功能,模拟从后台读取数据和处理数据(欢迎大家交流指正). 代码如下: 循环创建三棵树,其中只有第一棵树有数据,并从后台读取. var root = new Array(); var tree = new Array(); var loader = new Ext.tree.TreeLoader({ dataUrl: 'datatree.aspx' }) for (var i = 0; i

Java创建树形结构算法实例

在JavaWeb的相关开发中经常会涉及到多级菜单的展示,为了方便菜单的管理需要使用数据库进行支持,本例采用相关算法讲数据库中的条形记录进行相关组装和排序讲菜单组装成树形结构. 首先是需要的JavaBean 1 2 3 import java.io.Serializable; 4 import java.util.ArrayList; 5 import java.util.Collections; 6 import java.util.Comparator; 7 import java.util.

Hibernate中,基于Annotation的简单树形结构的实现

在系统设计中,经常用到递归性质的树形结果,比如菜单.多级分类等,一般是在同一个表中定义父子关系实现这种结构. 下面是在Hibernate中,基于Annotation的简单树形结构的实现: 第一步:创建Entity类,并添加注解实现关联关系    ps: 主要是利用@ManyToOne 和 @OneToMany 配置在同一个Entity类中实现树形递归的结构.hibernate注解形式比在xml配置更加简洁 TreeNode.java 1 package com.hfut.hibernate; 2

Qt QTreeWidget 树形结构实现(转)

Qt中实现树形结构可以使用QTreeWidget类,也可以使用QTreeView类,QTreeWidget继承自QTreeView类.树形效果如下图所示: 这是怎么实现的呢?还有点击节点时会有相应的事件响应. 1. 树形结构实现 QT GUI中有treeWidget部件,将该控件在Gui中布局好,假设其对象名为treeWidget. QTreeWidget类官方文档:http://qt-project.org/doc/qt-4.8/qtreewidget.html 树形结构通过QTreeWidg

递归算法解析成树形结构

/** * 递归算法解析成树形结构 * * @param cid * @return * @author jiqinlin */ public TreeNodeModel recursiveTree(int org_code) { //根据cid获取节点对象(SELECT * FROM tb_tree t WHERE t.cid=?) MiddleOrgEntity middleOrgEntity = new MiddleOrgEntity(); middleOrgEntity.setTable

你认为扁平化模式好还是树形结构好?

我认为对于小公司来说,扁平化的模式更好一些.由于小公司的规模比较小,公司内的员工不多,所需要的管理层次不多.扁平化模式的决策层和操作层之间的中间管理层次少,这可以使企业能够快速地将决策权延至企业生产.营销的最前线,从而为提高企业效率.而且由于公司规模小,管理部门之间的信息资源的交流.相互调用不会太多,这样可以是决策者集中更多的精力在企业的市场对策和企业发展的战略问题上. 对于大公司来说,树形结构会更好一些.大公司的规模比较大,所要做的项目比较多,如果一个人负责多个项目会造成项目完成效率不高.在树

解析java树形结构

思路一: 1.准备表结构及对应的表数据a.表结构: create table TB_TREE ( CID NUMBER not null, CNAME VARCHAR2(50), PID NUMBER //父节点 ) b.表数据: insert into tb_tree (CID, CNAME, PID) values (1, '中国', 0); insert into tb_tree (CID, CNAME, PID) values (2, '北京市', 1); insert into tb_

sqlite3树形结构遍历效率对照測试

sqlite3树形结构遍历效率对照測试 一.缘起 项目数据结构:本人从事安防行业,视频监控领域.项目中会遇到监控点位的组织机构划分.暂时划分的巡逻点位等.这些相机点位.连同组织机构,它们在逻辑关系上构成了一个树形结构. 又因为不论什么一个点位属于一个组织机构,也可能属于一个被暂时创建的视频巡逻计划中,因此,能够看出,不论什么一个节点,包含相机节点和组织机构节点,都有可能有至少一个父级节点,且不论什么一个组织机构节点也会有多个下级子节点.这中逻辑关系又构成了图. 数据量规模:一个市级别的管理平台,

salesforce 零基础学习(七十)使用jquery tree实现树形结构模式

项目中UI需要用到树形结构显示内容,后来尽管不需要做了,不过还是自己做着玩玩,mark一下,免得以后项目中用到. 实现树形结构在此使用的是jquery的dynatree.js.关于dynatree的使用可以参考:http://wwwendt.de/tech/dynatree/doc/dynatree-doc.html#h4.2 对于树形结构,这里不做太多介绍,树一般需要一个根节点,根节点下面可以有很多子节点或者叶子节点,子结点也可以包含叶子结点或者子节点.我们在设计表结构的时候可以考虑自连接操作