求一java语言写的动态加载树!(从数据库读取节点的那种)

问题描述

最近想研究研究java动态树,extjs的倒是看过,不会改,因为对于extjs不熟。想自己封装一个,运用ssh框架,sqlserver2005数据库,jQuery等。哪位能指点一下,给点意见。

解决方案

解决方案二:
思路:递归算法~~~还算简单
解决方案三:
所答非所问,继续求详细指点。
解决方案四:
这个对于展示的话就是用递归而在数据库设计的时候,则在每条记录存一个他上级的id,页面的话,再加点样式。可能就是页面比较麻烦。后台没有什么东西。用js+css写也行,就是很麻烦。
解决方案五:
简单的树我也会。但是我这个是个无限级的树,而且,增删改查都需要在另一个页面上完成。并非直接修改。可以先生成XML,然后从里面取节点,或者点击链接查询数据库取节点,两种方法都是一样的吗?求指点。
解决方案六:
先说下表结构,一张表,三个字段:选项ID,选项Name,选项所属ID选项ID可以自动生成,我用的是hibernate的UUID策略,Name随意,然后是选项所属ID,如果是第一级菜单的话,可以把其选项所属ID设为0,子菜单的话,选项所属ID是父类的ID比如说现在有一个一级选项A,id为123,名称为A,选项所属ID就为0然后有一个选项B是选项A的子选项,id不用管,自动生成,名称为A,选项所属ID就是A的ID:123取数据的时候,先把选项所属ID为0的取出来,即顶级选项,然后再将选项所属ID为此顶级选项ID的所有项取出来,即该顶级选项的子选项,然后在页面上添加到顶级选项中
解决方案七:
楼上说了很多,但是没说到点上。有具体的实现类吗?或者例子也行,我看的是实现的方法,和点击节点获取的参数,以及转向。还有取值的方法(XML的好些,还是数据库的好些。有那些利弊)继续求解。
解决方案八:
引用6楼tokissing的回复:

楼上说了很多,但是没说到点上。有具体的实现类吗?或者例子也行,我看的是实现的方法,和点击节点获取的参数,以及转向。还有取值的方法(XML的好些,还是数据库的好些。有那些利弊)继续求解。

没说到点上?你搞笑呢?下面这个例子是根据数据库中的产品类别生成菜单,你要的是树菜单,比葫芦画瓢会吧?$(document).ready(function(){//从后台读取产品类别中的顶级类别$.getJSON("../system/ajaxListFatherProductType",function(data){varwaitLoader=$("#waitLoad");if(data!=null){waitLoader.after('</ul>');waitLoader.after('<ulid="menu"class="menu">');varulMenu=$("#menu");$.each(data,function(i,fatherPro){//遍历,将所有的顶级类别插入waitLoader中ulMenu.append('<li><aclass="fatherPro"href="#">'+fatherPro.name+'</a>');ulMenu.append('<ulid='+fatherPro.id+'>');ulMenu.append('</ul>');ulMenu.append('</li>');//从后台读取产品类别所有子类别$.getJSON("../system/ajaxListChildProductType?productType.id="+fatherPro.id+"",function(data){if(data!=null){//将产品子类插入产品顶级类别下面$.each(data,function(i,childPro){vara="#"+fatherPro.id;$(a).append('<li><astyle="background:#D2D3DA;"href="listProduct?product.productType.id='+childPro.id+'"target="I2">'+childPro.name+'</a></li>');});}});});}});});

解决方案九:
http://blog.csdn.net/qingtaoY/archive/2010/08/25/5836968.aspx
解决方案十:
5楼说的意思可以做个无限树,就是一级一级往下取,这还有什么说的?点开一个节点,调用AJAX参数嘛就是父ID。数据库和XML个人认为还是数据库来的好,起码SQL语句还是方便。XML解析麻烦一点(添加节点和删除节点的情况),如果是非动态树XML没什么问题。还有你要求什么例子,分给的这么少有人会费那么大劲给你贴出来吗?最好还是找个好的点子,自己去完成
解决方案十一:
假设从数据库里读出来的Object[]里前3个字段分别是idnamepidimportjava.util.*;publicclassTree{publicListgetDeepTree(Listlist){Listtree=newArrayList();Listnode=newArrayList();if(list==null||list.size()==0){returnnull;}while(list.size()>0){if(node.size()==0){for(inti=0;i<list.size();i++){Objecto[]=(Object[])list.get(i);if(o[2]==null){node.add(0,o);tree.add(o);list.remove(i);break;}}}if(node.size()==0){break;}for(inti=0;i<list.size();i++){Objecto_child[]=(Object[])list.get(i);Objecto_parent[]=(Object[])node.get(0);if(o_child[2]==o_parent[0]){node.add(0,o_child);tree.add(o_child);list.remove(i);i=-1;continue;}}node.remove(0);}returntree;}publicstaticvoidmain(String[]args){Object[][]obj={{1,1,null},{2,2,3},{3,3,1},{4,4,2},{5,5,4},{6,6,5},{7,7,4},{8,8,10},{9,9,null},{10,10,9}};Listlist=newArrayList();for(inti=0;i<obj.length;i++){list.add(obj[i]);}Listlist2=newTree().getDeepTree(list);for(inti=0;i<list2.size();i++){System.out.println(((Object[])list2.get(i))[0]+""+((Object[])list2.get(i))[2]);}}}

解决方案十二:
该回复于2011-03-07 13:38:58被版主删除
解决方案十三:
该回复于2011-03-07 14:34:04被版主删除
解决方案十四:
引用9楼wangjiangbo2的回复:

5楼说的意思可以做个无限树,就是一级一级往下取,这还有什么说的?点开一个节点,调用AJAX参数嘛就是父ID。数据库和XML个人认为还是数据库来的好,起码SQL语句还是方便。XML解析麻烦一点(添加节点和删除节点的情况),如果是非动态树XML没什么问题。还有你要求什么例子,分给的这么少有人会费那么大劲给你贴出来吗?最好还是找个好的点子,自己去完成

这就是9楼的不对了,你要是能贴出来,你想要多少分都能给你。不是分的问题,第一次使用csdn发帖子,还望包涵。
解决方案十五:
继续求解,求方法,只要读取根节点,然后生成子节点的方法就行,只要能刷出树即可,非诚勿扰啊。。
解决方案:
我说的那个表结构就能存储无限极的树节点
解决方案:
引用15楼prince_java的回复:

我说的那个表结构就能存储无限极的树节点

你的方法我看了,但是进入方法直接就出下载窗口。why?你测试了吗?
解决方案:
可以看看easyUI的tree,我只实现了3级树,他有DEMO。自己做印象深刻

时间: 2024-10-31 10:31:54

求一java语言写的动态加载树!(从数据库读取节点的那种)的相关文章

easyui的tree控件动态加载树类型

问题描述 easyui的tree控件动态加载树类型 这个真不会写了高人帮看看 实现树类型 附有数据库表 后台用c#的一般处理程序 前台怎么传节点 等等 写的时候帮我写点注释.感激不尽!!! 解决方案 .................. 解决方案二: http://blog.csdn.net/hzw2312/article/details/38919877 C#不太清楚,java的话能帮你

sqlserver-EXTJS动态加载树,后台JSP,为什么报错NO DATA FOUND呢?代码在下,多谢了!

问题描述 EXTJS动态加载树,后台JSP,为什么报错NO DATA FOUND呢?代码在下,多谢了! 代码:LoadTree.html test3 <script type="text/javascript"> var tree = new Ext.tree.TreePanel({ loader : new Ext.tree.TreeLoader({ dataUrl : 'tree.jsp?Did=00001' }), border : false, root : new

EasyUi combotree 实现动态加载树节点_javascript技巧

推荐阅读: 简介EasyUI datagrid editor combogrid搜索框的实现 EasyUi中的Combogrid 实现分页和动态搜索远程数据 easyui 1.2.4例子中并没有给出动态加载树节点的例子,只好自己研究. 从源码中可知可以看出combotree 是继承 combo 和 tree两个控件,所以在展开其下级子节点时,把combotree内置的tree的options选项的url重置成一个动态取选择值的url,代码如下: $('#cc').combotree({ url:

Extjs入门之动态加载树代码_extjs

Extjs动态加载树,首先在数据库里面设计存放树信息的表 复制代码 代码如下: USE [KimiExtjs] GO /****** 对象: Table [dbo].[Trees] 脚本日期: 04/08/2010 22:12:25 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Trees]( [Tid] [varchar](40) COLLA

求高手指教,关于ajax动态加载下拉框的

问题描述 最近在弄毕业设计,是使用SSH框架开发的web项目.有一张课题表project,有一个projectlevel字段,字段为1,2,3,4时分别对应项目,课题,子课题,专题.并且通过fatherid字段相互关联.现在我要使用ajax实现一个这样的功能:有一个选择层级下拉框:里面有4个option:项目,课题,子课题,专题.当选择项目后,便出现一个下拉框:所属项目,并将projectlevel为1的projectname全部加载到所属项目下拉框中.当选择课题后,便出现2个下拉框,分别是所属

java+jodconverter + flexPaper+OpenOffice 动态加载路径问题

问题描述 我现在用java,flexPaper做的一个在线预览功能,现在的情况:打开WebRoot下的已经存在的swf文件可以正常显示,但是往WebRoot下传进新的swf文件时,就显示一直加载,然后刷新一下工程里的WebRoot(让那个新传进的swf文件刷新出来,在WebRoot下显示后),就可以打开并且显示.求赐教..是FlexPaperViewer,SwfFile:escape(filePath)的escape不能加载刚刚生成的文件,求解决思路,谢谢各位了.. 解决方案

请问怎用ssh动态加载extjs tree

问题描述 请问怎用ssh动态加载extjstree0链接数据库加载extjstree不知道怎把数据转为这样的格式:[{"id":"0",text:'广东11',"cls":"folder","leaf":false,"children":[{"text":"广州22","cls":"file","l

动态加载用户控件的组件!(三)

动态|加载|控件 上一篇文章写到动态加载用户控件的简单应用 页面是用来浏览信息的!但是更重要的是和用户交互,根据不同的需求提供不同的内容服务,这是一种服务或是一种更贴近用户的人性化.(又在胡言乱语了!^_^) 动态加载叶面,根据不同的用户权限加载不懂的内容服务.根据用户的相应加载相应的内容服务. 还有另外一个应用就是做到页面与代码的分离.在vs2003里,一般ascx或aspx文件,在刚建立的时候都直接跟一个cs文件关联.那么我们在写程序的时候就不能分开来做.作叶面和写后台代码的不能分开.为了能

Android动态加载jar/dex

前言 在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势.本文对网上Android动态加载jar的资料进行梳理和实践在这里与大家一起分享,试图改善频繁升级这一弊病.   声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com   Android中