动态生成树状菜单,要求每级菜单项均可链接并发送不同的查询参数,有没有例子或建议。
我在开发B/S 项目中遇到了动态生成多级菜单的技术问题。具体要求功能为:从SqlServer数据库表中读取信息,动态生成树状菜单,且每级菜单均可链接送出查询参数(包括根和叶)。
由于没有太多经验所以一直没有找到好的解决办法。希望能获得你的技术支持。
多谢!
我的邮箱:sfh8106@sian.com.cn
问题点数:50、回复次数:14Top
1 楼yihis(雪狼)回复于 2002-04-19 17:08:42 得分 5
这是我的一个公司内部留言板的代码,基本实现了你的要求
<!--#include file="../adovbs.inc"-->
<!--#include file="../dbconn/dbconn.asp"-->
<%
function tree(officeid)
sql="select * from officedb where officeparents='"&officeid&"'"
set rs1=conn.Execute(sql)
if rs1.bof or rs1.eof then
else
while rs1.eof=false
%>
<tr><td><input type="button" value=<%=rs1("officename")%> onclick="window.open('discdisp.asp?officeid=<%=rs1("officeid")%>','discdisp','width=640,height=480,toolbar=no,menubar=no')"></td>
<td>
<table>
<%
tree(rs1("officeid"))
%>
</table>
</td></tr>
<%
rs1.movenext
wend
end if
end function
%>
<center>
<table>
<tr>
<%
tree(0)
%>
</tr>
</table>
<table>
<tr>
<td>
<input type="button" value="公共留言" onclick="window.open('discdisp.asp?officeid=0','discdisp','width=640,height=480,toolbar=no,menubar=no')">
<input type="button" value="我的留言" onclick="window.open('discdisp.asp?officeid=self','discdisp','width=640,height=480,toolbar=no,menubar=no')">
</td>
</tr>
</table>
</center>
实际上说来就是递归调用函数,用这种方法遍历数据库Top
2 楼hookharsh(hookharsh)回复于 2002-04-19 17:21:53 得分 0
多谢雪狼
其中的Tree()的作用是什么?能不能发份代码给我看看。
有劳Top
3 楼abigfrog(千年精灵)(★JAVA★)回复于 2002-04-19 17:25:49 得分 5
<%
tree(rs1("officeid"))
%>
楼上的,你最关键的tree函数没有提供,呵呵
实现这个功能可以在节点字段中加flag标示属于哪个节点,然后通过循环输出Top
4 楼xys(永不放弃)回复于 2002-04-19 17:26:03 得分 5
这种方法太过于简单化了。Top
5 楼ChinaOk(农村表哥)回复于 2002-04-19 17:29:03 得分 5
看到这里的菜单了吗?改改就好了。再加一个表示参数的变量就好了。Top
6 楼anakine(时间过得真快)回复于 2002-04-19 17:50:20 得分 0
只提供思路:
以前我做过一种树要表结构支持.其实就是把单向链表存到数据库中,表结构如下
ParentNode ChildNode value
==============================
P000000001 P00000002 根结点
P000000002 P00000003 aaa
P000000002 P00000004 xxx
......................
取出来生成树的时候用递归函数实现.我那时很笨的,没采用一次把数据读出来的再Find的方式,搞得生成速度很慢(结点多了的时候).呵呵希望对你有用。
还有这种树有个缺点,就是目标页面的链接只能相同,当然要达到指向的页面不现也能做,就是由一个目标页面判断传过来的值后再指向不现的页面。
Top
7 楼anakine(时间过得真快)回复于 2002-04-19 17:52:25 得分 20
更正,"不现" 应为 "不同".五笔输入法版本不对。Top
8 楼hookharsh(hookharsh)回复于 2002-04-19 20:16:48 得分 0
to 下雨不带伞
能不能给代码看看,呵呵,有实例教材学的要快些:)
多谢。Top
9 楼hope2002(乐于助人)回复于 2002-04-19 21:27:30 得分 10
如有需要可以发E_Mail:hope781220@sina.com.cn
这个程序是从Oracle数据库中读出数据并动态生成树(根据用户权限),是因开发一个项目需要而编制的,对你或许有所帮助。Top
10 楼anakine(时间过得真快)回复于 2002-04-19 22:18:30 得分 0
前些天我用ASP+ACCESS又写了一个动态树,只传一个SQL语句,与具体表结构无关。(本来发过一个贴子,后来不小心删掉了),下周一我发给你(但愿头儿不到这个版来,不然我惨了,呵)。
另:上面那个带用递归实现的树在删除时也要递归删,比较麻烦(还得一个空表保存上层结点),所以现在不用了,呵。Top
11 楼hookharsh(hookharsh)回复于 2002-04-21 14:06:43 得分 0
顶一下。。。Top
12 楼hookharsh(hookharsh)回复于 2002-04-22 14:02:32 得分 0
再顶。。。请高手出招。。。。Top
13 楼anakine(时间过得真快)回复于 2002-04-22 14:35:10 得分 0
我不是发给你了吗? 关键在于SQL语句的写法.不管几层的树(理论上是这样受制于字符串的长度),都可以生成.而且目标页面还可以不同!Top
14 楼hookharsh(hookharsh)回复于 2002-04-22 16:27:19 得分 0
TO 下雨不带伞
我还没有收到,麻烦你再发一哈,多谢了!Top




