`

dtree动态树

阅读更多
这两天发现了dtree,做的很不错,想和大家交流一下
下载地址:http://www.destroydrop.com/javascripts/tree/dtree.zip
或从附件里下载
看看里面的example01.html例子。
在这个基础上我做了一个动态的树型结构数据的展现(其实就是动态生成js代码而已)。
java类代码
Java代码

   1. import java.io.Serializable; 
   2. public class TreeNode implements Serializable{ 
   3.     private String id ;          //节点编号 
   4.     private String pid ;         //父节点编号 
   5.     private String name ;        //节点名称 
   6.     private String url ;         //链接地址 
   7.     private String title ;       //节点描述 
   8.     private String target ;      //Target 
   9.     private String icon ;        //图标路径 
  10.     private String iconOpen ;    //展开状态下的图标路径 
  11.     private String open ;        //是否展开 
  12.      
  13.     //构造函数 
  14.     public TreeNode(){ 
  15.         id = "" ; 
  16.         pid = "" ; 
  17.         name = "" ; 
  18.         url = "" ; 
  19.         title = "" ; 
  20.         target = "" ; 
  21.         icon = "" ; 
  22.         iconOpen = "" ; 
  23.         open = "" ; 
  24.     } 
  25.     //------get set functions 

import java.io.Serializable;
public class TreeNode implements Serializable{
private String id ;          //节点编号
private String pid ;         //父节点编号
private String name ;        //节点名称
private String url ;         //链接地址
private String title ;       //节点描述
private String target ;      //Target
private String icon ;        //图标路径
private String iconOpen ;    //展开状态下的图标路径
private String open ;        //是否展开

//构造函数
public TreeNode(){
id = "" ;
pid = "" ;
name = "" ;
url = "" ;
title = "" ;
target = "" ;
icon = "" ;
iconOpen = "" ;
open = "" ;
}
//------get set functions



Java代码

   1. public class TreeNodeUtil { 
   2.     //返回js代码 
   3.     public static String createJsArray(TreeNode[] tn , String dtree) { 
   4.         if(tn == null || tn.length == 0 ){ 
   5.             System.out.println("TreeNode is empty"); 
   6.             return ""; 
   7.         } 
   8.         StringBuffer contents = new StringBuffer(100); 
   9.         contents.append("new dTree('"+dtree+"');"); 
  10.         for (int i = 0; i < tn.length; i++) {  
  11.             contents.append("\n"); 
  12.             contents.append(dtree+".add('"); 
  13.             contents.append(tn[i].getId()); 
  14.             contents.append("','"); 
  15.             contents.append(tn[i].getPid()); 
  16.             contents.append("','"); 
  17.             contents.append(tn[i].getName()); 
  18.             contents.append("','"); 
  19.             contents.append(tn[i].getUrl()); 
  20.             contents.append("','"); 
  21.             contents.append(tn[i].getTitle()); 
  22.             contents.append("','"); 
  23.             contents.append(tn[i].getTarget()); 
  24.             contents.append("','"); 
  25.             contents.append(tn[i].getIcon()); 
  26.             contents.append("','"); 
  27.             contents.append(tn[i].getIconOpen()); 
  28.             contents.append("','"); 
  29.             contents.append(tn[i].getOpen()); 
  30.             contents.append("');"); 
  31.         } 
  32.         return contents.toString(); 
  33.     } 
  34. } 

public class TreeNodeUtil {
//返回js代码
public static String createJsArray(TreeNode[] tn , String dtree) {
if(tn == null || tn.length == 0 ){
System.out.println("TreeNode is empty");
return "";
}
StringBuffer contents = new StringBuffer(100);
contents.append("new dTree('"+dtree+"');");
for (int i = 0; i < tn.length; i++) {
contents.append("\n");
contents.append(dtree+".add('");
contents.append(tn[i].getId());
contents.append("','");
contents.append(tn[i].getPid());
contents.append("','");
contents.append(tn[i].getName());
contents.append("','");
contents.append(tn[i].getUrl());
contents.append("','");
contents.append(tn[i].getTitle());
contents.append("','");
contents.append(tn[i].getTarget());
contents.append("','");
contents.append(tn[i].getIcon());
contents.append("','");
contents.append(tn[i].getIconOpen());
contents.append("','");
contents.append(tn[i].getOpen());
contents.append("');");
}
return contents.toString();
}
}


根据实际情况生成TreeNode对象
Java代码

   1. public void execute() throws EpochalException { 
   2.     // TODO Auto-generated method stub 
   3.     String sql = ""; 
   4.     String url = "" ; 
   5.     sql = "SELECT id,parentId,name,seq ,remark FROM t_testtree ORDER BY  seq DESC" ; 
   6.     TableData tableData = null; 
   7.     TreeNode[] treeNodes = null; 
   8.     try{ 
   9.         tableData = TableSelector.select(sql); 
  10.         if(tableData!=null){ 
  11.             treeNodes = new TreeNode[tableData.getRowCount()] ; 
  12.             for(int i = 0; i<tableData.getRowCount();i++){ 
  13.                 treeNodes[i] = new TreeNode(); 
  14.                 treeNodes[i].setId(tableData.getString(i,"id")); 
  15.                 treeNodes[i].setName(tableData.getString(i,"name")); 
  16.                 treeNodes[i].setPid(tableData.getString(i,"parentId")); 
  17.                 //根据实际情况生成连接地址 
  18.                 url = "programList.x?category="+tableData.getString(i,"name") ; 
  19.                 treeNodes[i].setUrl(url); 
  20.                 treeNodes[i].setTitle(tableData.getString(i,"remark")); 
  21.                 treeNodes[i].setTarget("_blank");//打开新窗口 
  22.             } 
  23.             dataBean.setParameter("treeNodeArray",treeNodes) ; 
  24.         } 
  25.     }catch(Exception e){ 
  26.         System.out.println(e.toString()); 
  27.     } 
  28. } 

public void execute() throws EpochalException {
// TODO Auto-generated method stub
String sql = "";
String url = "" ;
sql = "SELECT id,parentId,name,seq ,remark FROM t_testtree ORDER BY  seq DESC" ;
TableData tableData = null;
TreeNode[] treeNodes = null;
try{
tableData = TableSelector.select(sql);
if(tableData!=null){
treeNodes = new TreeNode[tableData.getRowCount()] ;
for(int i = 0; i<tableData.getRowCount();i++){
treeNodes[i] = new TreeNode();
treeNodes[i].setId(tableData.getString(i,"id"));
treeNodes[i].setName(tableData.getString(i,"name"));
treeNodes[i].setPid(tableData.getString(i,"parentId"));
//根据实际情况生成连接地址
url = "programList.x?category="+tableData.getString(i,"name") ;
treeNodes[i].setUrl(url);
treeNodes[i].setTitle(tableData.getString(i,"remark"));
treeNodes[i].setTarget("_blank");//打开新窗口
}
dataBean.setParameter("treeNodeArray",treeNodes) ;
}
}catch(Exception e){
System.out.println(e.toString());
}
}


jsp这边取"treeNodeArray"后通过TreeNodeUtil类生成js代码
Java代码

   1. <% 
   2. TreeNode[] treeNodes = (TreeNode[])dataBean.getParameterObject("treeNodeArray") ; 
   3. %> 
   4. <p><a href="javascript: d.openAll();">全部展开</a> | <a href="javascript: d.closeAll();">全部关闭</a></p> 
   5. <script language="javascript"> 
   6. d = <%=TreeNodeUtil.createJsArray(treeNodes,"d")%> 
   7. document.write(d); 
   8. </script> 

<%
TreeNode[] treeNodes = (TreeNode[])dataBean.getParameterObject("treeNodeArray") ;
%>
<p><a href="javascript: d.openAll();">全部展开</a> | <a href="javascript: d.closeAll();">全部关闭</a></p>
<script language="javascript">
d = <%=TreeNodeUtil.createJsArray(treeNodes,"d")%>
document.write(d);
</script>


客户端生成的js代码
Java代码

   1. <script language="javascript"> 
   2. d = new dTree('d'); 
   3. d.add('1','-1','栏目','programList.x?category=栏目','','_blank','','',''); 
   4. d.add('2','1','电影','programList.x?category=电影','','_blank','','',''); 
   5. d.add('3','1','电视剧','programList.x?category=电视剧','','_blank','','',''); 
   6. d.add('4','1','专题','programList.x?category=专题','','_blank','','',''); 
   7. d.add('5','1','远程教育','programList.x?category=远程教育','','_blank','','',''); 
   8. d.add('6','1','期刊','programList.x?category=期刊','','_blank','','',''); 
   9. d.add('7','2','动作片','programList.x?category=动作片','','_blank','','',''); 
  10. d.add('8','2','喜剧片','programList.x?category=喜剧片','','_blank','','',''); 
  11. d.add('9','2','鬼片','programList.x?category=鬼片','','_blank','','',''); 
  12. d.add('10','3','韩剧','programList.x?category=韩剧','','_blank','','',''); 
  13. d.add('11','3','古装剧','programList.x?category=古装剧','','_blank','','',''); 
  14. d.add('12','5','英语沙龙','programList.x?category=英语沙龙','','_blank','','',''); 
  15. d.add('13','4','热门推荐','programList.x?category=热门推荐','','_blank','','',''); 
  16. d.add('14','7','港台片','programList.x?category=港台片','','_blank','','',''); 
  17. d.add('15','7','欧美片','programList.x?category=欧美片','','_blank','','',''); 
  18. d.add('16','14','成龙全集','programList.x?category=成龙全集','','_blank','','',''); 
  19. d.add('17','14','李连杰全集','programList.x?category=李连杰全集','','_blank','','',''); 
  20. document.write(d); 
  21. </script> 

<script language="javascript">
d = new dTree('d');
d.add('1','-1','栏目','programList.x?category=栏目','','_blank','','','');
d.add('2','1','电影','programList.x?category=电影','','_blank','','','');
d.add('3','1','电视剧','programList.x?category=电视剧','','_blank','','','');
d.add('4','1','专题','programList.x?category=专题','','_blank','','','');
d.add('5','1','远程教育','programList.x?category=远程教育','','_blank','','','');
d.add('6','1','期刊','programList.x?category=期刊','','_blank','','','');
d.add('7','2','动作片','programList.x?category=动作片','','_blank','','','');
d.add('8','2','喜剧片','programList.x?category=喜剧片','','_blank','','','');
d.add('9','2','鬼片','programList.x?category=鬼片','','_blank','','','');
d.add('10','3','韩剧','programList.x?category=韩剧','','_blank','','','');
d.add('11','3','古装剧','programList.x?category=古装剧','','_blank','','','');
d.add('12','5','英语沙龙','programList.x?category=英语沙龙','','_blank','','','');
d.add('13','4','热门推荐','programList.x?category=热门推荐','','_blank','','','');
d.add('14','7','港台片','programList.x?category=港台片','','_blank','','','');
d.add('15','7','欧美片','programList.x?category=欧美片','','_blank','','','');
d.add('16','14','成龙全集','programList.x?category=成龙全集','','_blank','','','');
d.add('17','14','李连杰全集','programList.x?category=李连杰全集','','_blank','','','');
document.write(d);
</script>



感觉使用很方便,数据量不是很大(一般的树型结构的数据量不会很大的,数据量大了就不直观了)的情况下能够满足大多数人的需要。
注意的是root节点的pid必须为'-1'

    * dtree.zip (14.6 KB)
    * 描述: dtree.zip
    * 下载次数: 1203

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Dtree动态树菜单

    在这个场景中,"Dtree动态树菜单"是一个专门用于实现这种功能的工具或库。下面我们将深入探讨Dtree动态树菜单的相关知识点。 1. **Dtree介绍**: Dtree通常是一个JavaScript库或者框架的一部分,用于构建可扩展的...

    dtree动态树+Javascript右键菜单

    【dtree动态树】是一种基于JavaScript的客户端树形控件,用于在网页中展示层级结构的数据,例如网站导航、文件目录等。它允许用户通过展开和折叠节点来探索信息。dtree控件提供了丰富的交互性,包括点击节点、展开/...

    DTree动态树形菜单

    DTree动态树形菜单是一种常见的用户界面元素,广泛应用于数据层级结构的展示,例如文件系统、组织架构或者网站导航。这个完整的项目例子提供了一个全面的解决方案,帮助开发者理解和实现这样的功能。 首先,我们要...

    dtree动态树 Javascript右键菜单.doc

    dtree动态树 Javascript右键菜单

    dtree树形菜单(有带checkbox实现)

    有静态树形菜单和动态(从数据库获取数据)树形菜单展示两种 数据库连接采用简单的类实现 数据位MySQL(5.0.21),数据库创建脚本为dtree.sql 菜单既有普通的树结构展示,也有方便做权限等功能的带选择框的展示(含带...

    dtree动态生成树

    在IT行业中,动态生成树(dtree)是一种常见的数据可视化技术,主要用于展示层次结构的数据,例如文件系统、组织架构或决策树等。JQuery是一个广泛使用的JavaScript库,它提供了丰富的功能来增强网页交互性。dtree是...

    jquery整合dtree 动态加载树形结构,提高效率

    动态加载树形结构, 本人这段时间正巧要做一个省市县的树状结构图,公司之前用的dtree实现起来效率太低,半天打不开页面,于是考虑用jquery动态加载,通过网上查资料,学习别人的列子,现将本人所整理的树状结构...

    dtree+jquery动态生成树

    【dtree+jquery动态生成树】是一个用于创建交互式树形结构的JavaScript库,结合了jQuery框架的强大功能,使得在网页上动态展示层次结构数据变得简单。本实例着重于实现菜单树的生成,这对于构建多级导航系统尤其有用...

    Dtree目录树下载

    了解并熟练掌握这些API是使用DTree的关键,它允许开发者实现动态加载数据、响应用户操作、实现树的异步加载等多种高级功能。 `example01.html`是一个示例文件,展示了DTree的基本用法。通过查看这个例子,开发者...

    ssh+json+dtree+mysql实现N级动态树形菜单+增删改查

    项目中的"DTree动态树形菜单(完整项目例子)内含数据库设计截图rar"文件提供了数据库设计的可视化表示,帮助理解数据结构。而"spring+struts2+hibernate+json+dtree+mysql实现的无限级联树"则是整个系统的代码实现...

    dtree写的动态树形菜单

    本篇文章将深入探讨如何使用dtree库来创建动态树形菜单,以及与之相关的JavaScript技术。 首先,dtree是一个JavaScript库,专为构建可交互的、动态的树形菜单设计。它允许开发者根据用户的权限动态生成菜单结构,这...

    dTree组件实现动态树形菜单的展示

    DTree动态展示树形菜单.rar 本工程使用dTree组件实现树形菜单的展示 有静态树形菜单和动态(从数据库获取数据)树形菜单展示两种 数据库连接采用简单的类实现 数据位MySQL(5.0.21),数据库创建脚本为dtree.sql

    使用DTREE构建树

    本文将深入探讨如何使用DTREE构建树菜单,包括动态树和静态树的构建方法。 首先,让我们理解决策树的基本概念。决策树是由节点和边构成的图形结构,其中每个内部节点代表一个特征或属性测试,每个分支代表一个测试...

    dtree支持动态添加,删除节点

    在这个场景中,提到的"dtree支持动态添加、删除节点"意味着该决策树实现允许在构建过程中或构建完成后,对决策树的结构进行修改,即增加或移除节点。这种特性对于处理不断变化的数据集或者需要实时更新模型的情况...

    dtree实现的树支持多选

    【dtree实现的树支持多选】是一种在网页交互中常用的数据展示和操作方式,尤其在数据层级结构复杂时,如文件系统、组织结构或菜单导航等场景。DTree(通常指的是JavaScript实现的树形控件)允许用户通过勾选节点来...

    dtree 写好的 随便用我写好的 直接看example2.jsp 快看看吧

    【dtree动态树详解】 在IT领域,"dtree"通常指的是动态树(Dynamic Tree),这是一种数据结构,常用于构建可交互的、可扩展的层级结构。动态树在Web开发中,尤其是Java Web环境中,被广泛应用来展示层级关系的数据...

    Dtree树菜单 动态树

    DTree,作为一个动态树形菜单的实现,是网页应用中用于展现多级分类数据的有效工具。在这个项目实例中,我们将深入探讨DTree的原理、实现方式以及其在实际应用中的优势。 首先,我们要理解“动态”这个词在DTree中...

    dtree js树形菜单 你懂的

    **dtree JavaScript 树形菜单组件详解** 在Web开发中,树形菜单是一种常见的交互元素,用于展示层次化的数据结构,如网站导航、文件系统或组织结构等。`dtree`是一个轻量级且易于使用的JavaScript库,专门设计用于...

Global site tag (gtag.js) - Google Analytics