如何用纯jsp打造无限层次的树代码

来源:爱站网时间:2020-11-27编辑:网友分享
很多人在开发中遇到过这样的问题:一个表,有自己编号,内容,上级编号,如何用这些数据在jsp中构造一个树?

很多人在开发中遇到过这样的问题,那么就是如何用纯jsp打造无限层次的树代码,其实打造无限层次的树代码并不难,那么接下来我们就一起去看看吧。

做树并不复杂,但我们通常做的是2层或3层,那样的数据一般来自多个表,比如:部门,员工
然而这种自连接的表,其没有确定的层次,可能是无限多级
比如:a是b的上级,b是c的上级,c是d的上级...
每个上级有几个下级,下级的层次,都是动态的
解决这个问题,其实主要用到js的知识
可以使用div的innerHTML属性
当然也可以用table,用append的方法
下面就用div的innerHTML属性来实现
主要思路是通过super,在document中查找id与自身super关联的div,这个div就是自身的上级,把自己附加到这个div中就可以了
另外,通过设置自己的title,保存了自己上级的id
为了看到层层缩进效果,设置了div的style为左边距有10px
+ 和 - 通过div中的span实现,这里改变的是span的innerHTML,也可以换为用图片,改变img的src即可
而在点击这些 + 或 - 的时候,会调用一个js函数,传入自己的id,这个函数会在document的所有div中查找自己的下级,由于每个div的title保存了其上级的id,所以只有找到那些title为自己id的就可以了
找到这些下级,就设置其隐藏或显示即可
建表
use tempdb
go
create table tb
(
id int primary key,
name varchar(50) not null,
super int references tb
)
insert into tb values (1,'总公司',null);
insert into tb values (2,'长沙分公司',1);
insert into tb values (3,'株洲分公司',1);
insert into tb values (4,'湘潭公司',1);
insert into tb values (5,'长沙东区分点',2);
insert into tb values (6,'长沙南区分点',2);
insert into tb values (7,'湘潭东区分点',4);
insert into tb values (8,'长沙东区分点一处',5);
insert into tb values (9,'长沙东区分点二处',5);
insert into tb values (10,'长沙东区分点三处',5);
insert into tb values (11,'长沙南区分点一处',6);
insert into tb values (12,'长沙南区分点二处',6);
insert into tb values (13,'湘潭东区分点一处',7);
insert into tb values (14,'湘潭东区分点二处',7);
insert into tb values (15,'长沙东区分点一处一门市部',8);
insert into tb values (16,'长沙东区分点一处二门市部',8);
select id,name,isnull(super,0) as super from tb order by super
-------------------------------------------------------------------------------------------------------------------------
tree.jsp文件

//获取数据库的数据,并保存为双层集合,然后放到pageContext中
//这样与使用dao和servlet得到的,放到request中的方式是一致的
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url = "jdbc:microsoft:sqlserver://localhost:1433;databasename=tempdb";
Connection cn = DriverManager.getConnection(url,"sa","sa");
Statement st = cn.createStatement();
String sql = "select id,name,isnull(super,0) as super from tb order by super";
ResultSet rs = st.executeQuery(sql);
ArrayList lstAll = new ArrayList();
ArrayList lstLine;
while(rs.next()) {
lstLine = new ArrayList();
lstLine.add(rs.getString(1));
lstLine.add(rs.getString(2));
lstLine.add(rs.getString(3));
lstAll.add(lstLine);
}
pageContext.setAttribute("lstAll",lstAll);
%>




------------------------------------------------------------------------------------------------------------------------------
大家可以进一步想,实际点每个内容的时候,一般会链接到某个url,那么,这里怎么处理?
如果你熟悉html和js,当然就是很容易的
思路:数据库中该表增加一个字段,url,定义链接地址
在js中修改代码
大家还可以考虑把它做成标签,更方便

上文就是小编为大家介绍如何用纯jsp打造无限层次的树代码的内容,感兴趣的用户们快点熟悉如何用纯jsp打造无限层次的树代码,让jsp构造清晰起来吧!

上一篇:怎样用JavaMail访问Hotmail邮箱

下一篇:Java如何创建和删除cookie

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载