| 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字段.
使用递归方法不能很好完成无限级树状,因为遍历的次数是: 深度 * 记录数 超过一定深度和记录数,递归将变得很慢,慢到你无法忍受. 只能修改数据库设计方案或使用其他方法.
哇!可以了啊。太好了!谢谢谢谢。 小弟也姓谢,不知大哥是否也是?
|
|
 |
推荐文章 |
|