WEB 开发 开发语言 Java 技术 .Net 技术 数 据 库 硬件使用
图象媒体 Linux/Unix 移动平台 嵌入开发 Windows 专区 软件工程
Ajax 技术 | ASP | PHP | ASP.NET | C# | JSP | Access | Oracle | 网页设计 | Flash | 安全专题 | IIS | VC/MFC | Delphi | C/C++
 你的位置:首页 > WEB 开发 > ASP

ASP用递归可以读出无限级的树状列表吗?
[ 来源:ITWENKU 时间:2007-4-15 18:40:03 | 浏览:250人次 ]


想用ASP读取无限级树状列表,哪位大哥给我找找问题?

谢谢!

DC_Department 表:

ID Title ParentID Child
1 A集团总部 0 1
2 B汕尾分部 1 3
3 C规划部 2 1
13 C财政部 2 2
14 D计量部 13 1
15 D审计部 13 2
16 B香港分部 1 0
17 C国贸恰谈部 2 0
18 E核算科 15 0
19 E结审科 15 0
20 B香港分部 1 0


我想读出这样的树状列表:(即A的子是B,B的子是C,以此类推)

A集团总部
├-B汕尾分部
├--C规划部
├--C财政部
├--D计量部
├--D审计部
├--E核算科
├--E结审科
├--C国贸恰谈部
├-B香港分部
├-B深圳分部

可是总是读不到第三层,或者读出来的却是不是想要的:

A集团总部
├-B汕尾分部
├--C规划部
├--C财政部
├--D计量部
├--D审计部
├--E核算科
├--E结审科
├--C国贸恰谈部
├-B香港分部
├-B深圳分部

相关脚本:

Function hChild(n)
if isnumeric(n) then
dim dsid
set ds=conn.execute("select child from dc_Department where id="&n&"")
if ds.bof or ds.eof then
hChild=0
else
hChild=0
dsid=ds(0)
end if

if ds(0)>0 then
hChild=1
end if

ds.close
set ds=nothing
end if
End Function

Private Sub rChild(n)
if isnumeric(n) then
set rs=conn.execute("select * from dc_Department where parentid="&n&"")
while not rs.eof
response.write("  <img src='Images/Admin/tree_line1.gif'>"&rs("title")&"<br/>")
if hChild(rs("id")) then
response.write("  ")
rChild(rs("id"))
end if
rs.movenext
wend
rs.close
set rs=nothing
end if
End Sub

Private Sub sChild()
set fs=conn.execute("select * from dc_Department where parentid=0 order by id desc")
do while not fs.eof
response.write("<img src='Images/Admin/tree_line1.gif'>"&fs("title")&"<br/>")
rChild(fs("id"))
fs.movenext
loop
fs.close
set fs=nothing
End Sub

Call sChild()



点数太少,加到50,^_____________^


可以 , 记录一个它的上一级就 可以了


我的代码有问题吗,问题出在哪里?急求啊。。。
没分了,已经倾囊而出了。。。


大概是这个意思, 不对你再调,俺没数据情况,需要你自己调试.

一般深度的子类,或没有太大量的数据记录,递归是可以的.
<%

Call showTree(0, "", 0)


Sub showTree(ID, Name, Num)
Dim i, RsTree
For i = 1 to Num
Response.write ("  ")
Next
If Num > 1 Then Response.write ("├-")
If Name <> "" Then Response.write ("<a href=""?id=" & ID & """>" Name & "</a><br/>")

Set RsTree = Conn.Execute("select ID, Title from DC_Department where ParentID = " & ID)
Do Until (RsTree.EOF Or RsTree.BOF)
Call showTree(RsTree(0), RsTree(1), Num + 1)
RsTree.MoveNext
Loop
If Not (RsTree Is Nothing) Then RsTree.Close : Set RsTree = Nothing
End Sub
%>


没有用到你那个什么Child字段.


使用递归方法不能很好完成无限级树状,因为遍历的次数是: 深度 * 记录数
超过一定深度和记录数,递归将变得很慢,慢到你无法忍受. 只能修改数据库设计方案或使用其他方法.


哇!可以了啊。太好了!谢谢谢谢。
小弟也姓谢,不知大哥是否也是?

 相关文章
·循环里同名checkbox如何限定选取个数
·asp如何可以实现静态面页的生成。最好有原程序这样子我学得快
·如何检测选中的checkbox的个数
·请问一个类型不匹配的问题?
·GET方式传递字符串的问题
·想把access改成sql server 数据库

 推荐文章
偷页面 报错
这两句语句没问题吧,怎么一个可以执行,一句不行呢?
如何在asp中用javascript来访问和设置global.asa中变量的值
request。form也会有错不?~
cookies丢失的问题?
对于服务器时间,这里判断年月日中的日,对于不同的日,用不同的样式。怎么做?
关于数据库链接
232673,232808,238735,245119,244882,怎样去掉最后一个逗号
在数据库怎么设字段
关于删除多条记录的问题
有关SQL server在asp中的连接问题
求如果让调用结果的第一项值默认就为下一页传值?
 版权所有:IT问库
copyright © 2006 www.itwenku.cn all rights reserved.