`
gaozzsoft
  • 浏览: 424827 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

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'
分享到:
评论

相关推荐

    IFrame框架收缩与JS的DTree树型菜单

    本实例Demo实现IFrame框架结构的左右上下收缩,左侧采用了DTree树结构菜单。 --------------------------------------------- This is top! --------------------------------------------- Example ............|...

    dtree树型资源及实例

    在前端开发中,数据组织结构常常需要以层次化的方式呈现,这时,树型控件就显得尤为重要。dtree是一款基于JavaScript的树形菜单插件,它轻量级、高效且易于使用,被广泛应用于网页中,用于展示层级关系的数据。本篇...

    dtree树型控件(纯js)

     dTree可以不用添加任何页面而直接用代码实现多个栏目,并可以实现无限分级,下面是官方介绍的优点:  - Unlimited number of levels(无限分级)  - Can be used with or without frames(可用于框架或非框架页面) ...

    在struts里的实现dtree通用树型结构

    ### 在Struts中实现DTree通用树型结构 #### 概述 在Web应用程序开发过程中,树型结构(Tree Structure)是一种非常常见的数据展示形式,它可以帮助用户更好地组织和理解复杂的数据关系。本文将详细介绍如何在...

    JAVAscript dtree 树型菜单

    3. **初始化dTree**:在JavaScript中创建dTree实例,传入容器元素以及数据源(通常是一个JSON对象,描述树的结构)。 4. **配置选项**:可以设置dTree的一些参数,如是否显示复选框、初始展开的节点等。 5. **绑定...

    基于Ajax技术的树型结构目录的实现

    ### 基于Ajax技术的树型结构目录的实现 #### 摘要与背景介绍 随着互联网技术的快速发展,树型结构作为一种重要的数据组织形式,其应用范围日益扩大。从传统的文件系统到复杂的数据库索引,乃至现代的网页导航栏...

    web树型结构dtree

    dtree.js原始文件,用于实现web树型结构.

    Dtree_树型控件

    在IT行业中,树型控件(Treeview)是一种常见的用户界面元素,用于展示层次结构的数据。在Java中,实现树型控件的功能通常会用到Java Swing或JavaFX这两个库。"Dtree_树型控件"可能是指一个特定的Java实现,用于创建...

    js动态树型结构 树型菜单

    树型结构和树型菜单是数据可视化的一种常见方式,它们能够帮助用户有效地组织和导航复杂的数据层次。在这个场景下,"js动态树型结构 树型菜单"指的是使用JavaScript实现的可以动态加载、展示和操作的树状菜单系统。 ...

    css文档和dtree和JAVA数据结构

    这些文件共同涵盖了前端开发(CSS)、数据挖掘与机器学习(DTREE)、后端编程(Java数据结构)以及操作系统使用(Linux命令)等多个IT领域的基础知识。深入学习和理解这些内容,将有助于全面提升一个IT专业人员的...

    JavaScript组件dtree轻松实现树型菜单

    除了基本的树型结构,dtree还支持图标、复选框、拖放等高级特性。例如,通过设置`icon`属性,你可以为节点指定图标;通过添加`checked`属性,可以实现节点的多选功能。 总的来说,dtree组件为开发者提供了一种简单...

    java版动态树型结构

    总的来说,"java版动态树型结构"的实现涉及到Java的图形用户界面编程、数据库操作以及前后端的数据交互,是开发复杂应用程序时常用的技术组合。通过这样的方式,我们可以有效地管理和展示层次化数据,提高用户体验。

    dtree实现树形结构

    总之,"dtree实现树形结构"是指利用dtree这个JavaScript库来创建、操作和显示具有层级关系的数据结构。这个过程涉及到了数据模型的构建、API的使用以及与前端框架的集成,对于开发复杂的交互式用户界面至关重要。...

    Javascript 树型结构集合

    在本案例中,"Javascript 树型结构集合"可能包括了像dtree、treeview、menu和qqmenu等多种实现方式。这些组件通常用于Web应用程序,以图形化方式展示层次关系的信息。 1. **dtree(动态树)**:dtree是一种动态生成...

    dtree 树结构 前端

    【dtree 树结构 前端】是一种在前端开发中常见的数据展示方式,它用于构建和展现层次化的数据结构,比如文件系统、组织架构或者导航菜单等。在这个主题下,我们将深入探讨dtree的实现原理、前端技术栈以及相关的实践...

    基于Java的源码-JSP树型菜单 DTree.zip

    DTree则表明这是一个实现树型菜单功能的组件或库,常用于网站或应用程序的导航结构,使用户能够以层次结构的方式浏览和选择不同的选项。 【描述解析】 描述中提到的“基于Java的源码-JSP树型菜单 DTree.zip”与标题...

    layui dtree树形结构

    1. **易用性**:layui dtree的API设计简单明了,开发者可以通过几行代码快速实现树形结构的展现。 2. **灵活性**:它可以自定义节点的展开、关闭、选中、禁用等多种状态,支持异步加载数据,满足各种业务需求。 3. *...

    可刷新Js树型菜单 dTree

    `dTree` 支持无限级别的子节点,这意味着你可以构建任意深度的数据结构,这对于组织和展示多层关系的数据非常有用。例如,在网站导航、文件系统浏览或组织架构展示等场景下,这种特性尤为实用。 **2. 动态刷新** `...

    dtree树状结构插件

    **dtree树状结构插件** 是一种用于在网页中展示层次化数据的工具,它以树形结构呈现信息,使用户能够清晰地理解和导航复杂的层级关系。在网页设计和开发中,dtree插件因其易用性和免费特性而受到欢迎。 **dtree的...

    无限级可刷新Js树型菜单 dTree

    这个标题表明该库特别适用于那些需要展示复杂层次结构数据的场景,比如组织结构、文件系统或者导航菜单等。 【描述解析】 描述中的“无限级可刷新Js树型菜单 dTree”是对标题的重复,进一步强调了该库的核心特性:...

Global site tag (gtag.js) - Google Analytics