目前做机构管理这块,需要构造无限级树代码。
根节点为null,传进来数据集 List
构造根节点:
List<SysOrgBean> retList = new ArrayList<SysOrgBean>(); for (SysOrgBean bean : beanList) { if(StringUtil.isEmpty(bean.getParentOrgId())){ List<SysOrgBean> children = getChildren(beanList,bean.getOrgId()); if(null != children && !children.isEmpty()){ bean.setChildren(children); for (SysOrgBean sysOrgBean : children) { buildNode(sysOrgBean, beanList); } } retList.add(bean); } } return retList;
getChildren获取节点子集,buildNode构造子节点。
public static void buildNode(SysOrgBean sysOrgBean, List<SysOrgBean> beanList){ List<SysOrgBean> children = getChildren(beanList, sysOrgBean.getOrgId()); if (null != children && !children.isEmpty()) { sysOrgBean.setChildren(children); for (SysOrgBean child : children) { buildNode(child, beanList); } } }
public static List<SysOrgBean> getChildren(List<SysOrgBean> beanList, String parentOrgId){ List<SysOrgBean> childList = new ArrayList<SysOrgBean>(); for (SysOrgBean sysOrgBean : beanList) { if(!StringUtil.isEmpty(sysOrgBean.getParentOrgId()) && sysOrgBean.getParentOrgId().equals(parentOrgId)){ childList.add(sysOrgBean); //beanList.remove(sysOrgBean); } } return childList; }
由于用hibernate,需要将数据实体转换称业务实体,够造如下方法:
public static List<SysOrgBean> parse(List<SysOrg> orgList){ List<SysOrgBean> beanList = null; if(null != orgList && !orgList.isEmpty()){ beanList = new ArrayList<SysOrgBean>(); for(SysOrg org : orgList){ SysOrgBean bean = parse(org); if(null != bean){ beanList.add(bean); } } } return beanList; } public static SysOrgBean parse(SysOrg org){ if(org != null){ SysOrgBean orgBean = new SysOrgBean(); orgBean.setOrgId(org.getOrgId()); orgBean.setParentOrgId(org.getParentOrgId()); orgBean.setOrgName(org.getOrgName()); orgBean.setOrgLevel(org.getOrgLevel()); orgBean.setSortNo(org.getSortNo()); return orgBean; } return null; }
相关推荐
`dTree`的构造函数接受两个参数:第一个参数是树的标识符,第二个参数是树的数据。数据格式通常是键值对,其中键包括`id`(节点ID)、`text`(节点文本)和`children`(子节点数组)等。 为了使树形菜单具有交互性...
实现这一目标的关键在于设计一个算法,能够从数据库读取数据,构建一个多叉树的数据结构,并将其序列化为JSON。在示例代码中,`branchTree.html`是一个使用Ext JS创建的树形控件,它配置了一个TreeLoader,指向`...
递归作为算法设计中的一种基本方法,非常适合处理具有自相似特性的数据结构,如树和图。 - **应用场景**:无限级树形结构常用于表示多层嵌套的关系,如文件系统、产品分类、组织架构等。在Web开发中,这种结构可以...
在IT领域,尤其是在Web开发中,无限级树形菜单是一种常见的数据结构,常用于网站导航、组织层级结构或展示具有嵌套关系的数据。本案例中,"无限级树形菜单(Sql数据库)_mytree.zip" 提供了实现这种功能的源码,可能是...
本示例“c#无限加载的树形DEMO”聚焦于如何在C#环境中实现无限级树形结构的动态加载。这种技术在很多场景下都非常有用,例如在文件系统、组织结构、数据库层次关系的展示等。 无限级树形加载通常涉及递归或迭代的...
在Java编程中,构建无限级树结构是一种常见的需求,特别是在数据结构、数据库操作以及图形用户界面(GUI)设计中。无限级树允许我们表示层次化的数据,如组织结构、文件系统或者目录结构。这里我们将深入探讨如何在...
5. 数据结构与算法(构建树形结构) 6. 前后端交互(RESTful API) 7. AJAX异步刷新 8. 前端树形菜单渲染 通过以上步骤,你可以实现一个能够连接MySQL数据库,支持无限级分类的Java树形菜单,并且利用AJAX实现页面...
在计算机科学中,树是一种非线性数据结构,由节点(或称为顶点)以及连接这些节点的边构成。在无限级分类目录树中,每个节点可以有任意数量的子节点,这使得它可以表示任意深度的层次结构。 1. 数据模型设计: ...
在Java编程中,树结构是一种常见的数据结构,用于表示具有层次关系的数据。无限极树结构则是指树的层级没有限制,可以无限扩展。这种结构在实际应用中非常广泛,例如组织架构、文件系统、菜单导航等场景。下面将详细...
在本教程中,我们将探讨如何在VS2008环境下,结合SQLServer2000数据库,实现TreeView控件的无限级数据绑定。 首先,我们来看`TtreeView`(可能是打字错误,应为`TreeView`)控件的基本使用。TreeView控件由节点...
在实现多层级列表时,我们同样需要一个自定义的Adapter来处理不同层级的数据结构。 1. **数据模型设计**: 我们需要一个数据模型类,表示树形结构的节点。这个类通常包含两个主要属性:一个是存储节点数据,另一个...
实现这种无限级可刷新Js树型菜单通常涉及的技术点包括DOM操作、事件监听、数据结构(如链表或树)以及可能的异步加载策略(如Ajax)。JavaScript的面向对象编程和函数式编程特性也可能在实现过程中发挥作用,例如...
新闻无限级分类通常涉及到树形数据结构的实现,如多级菜单或分类目录。在数据库设计中,这可以通过自引用的方式实现,即新闻分类表中有一个字段指向自身,表示父类别与子类别的关系。常见的实现方式有Adjacency List...
- **AJAX请求**:根据当前选中的值,构造请求参数,如URL参数或POST数据,发送到服务器。 - **处理响应**:接收到服务器返回的数据后,解析数据(可能是JSON格式),生成新的HTML选项,并插入到对应的选择器中。 ...
### 实现基于Ajax的无限级菜单源代码解析与关键技术点 #### 一、引言 在Web开发领域,Ajax技术的应用极大地提升了用户体验,使得页面无需...对于需要实现复杂菜单结构的Web应用而言,这是一个非常值得参考的设计方案。
1. **数据源**:通常,树形菜单的数据源可能来自数据库、XML文件或其他数据结构。可以先将这些数据转换成易于处理的格式(如上述的`TreeNodeData`列表),然后调用`BuildTree`方法构建树形菜单。 六、自定义样式 1...
在PHP中,无限级分类是一种常见...总结,这个PHP类提供了一种简单有效的方法来处理无限级分类数据,通过递归和循环来构建和输出树状结构。它对于处理有层级关系的数据非常实用,且代码简洁易懂,适合在各种项目中复用。
1. **无限级缓存**:无限级缓存是指能够支持任意层数的数据结构存储方式,通常用于表示具有层次关系的数据。 2. **分类缓存**:指根据一定的条件将数据分门别类地存储起来,以便后续快速访问。在本例中,主要涉及...
这个类主要用于处理具有层级关系的数据,如组织结构、目录树或分类等,将它们转换成易于用户选择的树状结构。以下是这个类的一些关键知识点和功能的详细解释: 1. **类属性**: - `$result`:存储结果集,通常是...