asp生成树,谁能提供一个算法?
数据库字段内容如下:
haier '最高的节点
haierpc '一级节点
haierpc1 '二级节点
haierpc2 '二级节点
haierpc3 '二级节点
haierlcd '一级节点
haierlcd1
haierlcd2
haierlcd3
haierlcd4
haiertv '一级节点
haiertvlcd '二级节点
haiertvhk '二级节点
haierm '一级节点
haierm1 '二级节点
就是根据字母的增加来自动生成树的,希望高手能帮个忙
问题点数:100、回复次数:7Top
1 楼spear_nj(留个微笑给我)回复于 2005-08-01 10:02:20 得分 0
haierm11 /三级节点Top
2 楼znjgress(四空和尚)回复于 2005-08-03 11:20:30 得分 0
参考一下狼的treeTop
3 楼madpolice(午夜狂龙)回复于 2005-08-03 11:27:07 得分 0
id parent_id
1 0 一级节点
2 1 二级节点
3 1 二级节点
4 2 三级节点
5 0 一级节点
6 3 三级节点Top
4 楼IT_Fish(游泳在IT的鱼)回复于 2005-08-03 14:03:46 得分 100
我把狼的贴出来给你参考下
<HTML>
<HEAD>
<style type="text/css">
<!--
.aa {
font-size: 12px;
color: #000000;
text-align: center;
vertical-align: middle;
letter-spacing: 0px;
word-spacing: 0px;
}
body,td,th {
font-size: 12px;
font-family: ??ì?;
}
body {
background-color: #dee3f7;
}
-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"></HEAD>
<body >
<%
dim cn,rs,SQL ,Para,NumChild
set cn=server.CreateObject("ADODB.connection")
set rs=server.createobject("ADODB.recordset")
set rs1=server.createobject("ADODB.recordset")
cn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("tree.mdb")
SQL="Select * from tree order by ID"
rs.open SQL,cn,3,2
do while not rs.EOF
SQL="Select ID from tree where ID like '" & rs("ID") & "_%' and ID<>'" & rs("ID") & "' order by ID"
Para=rs("ID") & "|"
NumChild=0
rs1.open SQL,cn, 3,2
NumChild=rs1.RecordCount
do while not rs1.EOF
Para =Para & rs1("ID") & "|"
rs1.MoveNext
loop
Para=cstr(trim(left(Para,len(Para)-1)))
rs1.Close
%>
<table id="T<%=rs("ID")%>"
border=1
cellpadding=0
cellspacing=0
bordercolor="#DEE3F7"
class="aa"
abbr="<%=Para%>"
summary=<%=checkid(rs("ID"))%>
style="cursor:hand"
onClick='vbs:subtree "<%=Para%>"' >
<tr>
<td width="<%=17+checkid(rs("ID"))*20%>"
height="17" align="right">
<table width="17" height="17" border="1" cellpadding="0" cellspacing="0" bordercolor="#DEE3F7">
<tr>
<td align="center" valign="middle" bordercolor="#000000" id="R<%=rs("ID")%>" ><%if NumChild=0 then Response.Write "." else Response.Write "-"%></td>
</tr>
</table>
</td>
<td height="17"
nowrap
bordercolor="#FFFFFF"
onMouseOver="vbs:me.bgcolor='#CCCCCC':me.bordercolor='#999999'"
onMouseOut="vbs:me.bgcolor='#DEE3F7':me.bordercolor='#ffffff'"
title="<%=rs("ID")%>"
onclick='vbs:window.location.href="<%=rs("HyperLink")%>"'
>
<%=rs("Name")%></td>
</tr>
</table>
<%
rs.MoveNext
loop
rs.Close:set rs=nothing
set rs1=nothing
cn.Close:set cn=nothing
function checkid(x)
dim Tempnum
Tempnum=0
for i=1 to len(x)
if mid(x,i,1)="_" then
Tempnum=Tempnum+1
end if
next
checkid=Tempnum
end function
%></body >
<script language=VBS>
sub subtree(Client_para)
if instr(Client_para,"|")=0 then exit sub
Myarray=split(Client_para,"|")
Mytext=eval("R" & Myarray(0) & ".innertext")
select case Mytext
case "+"
document.all.item("R" & Myarray(0)).innertext="-"
for i=1 to ubound(Myarray)
if eval("T" & Myarray(i) & ".summary")-eval("T" & Myarray(0) & ".summary")=1 then
document.all.item("T" & Myarray(i)).style.display="block"
end if
if eval("T" & Myarray(i) & ".summary")-eval("T" & Myarray(0) & ".summary")>1 then
document.all.item("T" & Myarray(i)).style.display="none"
end if
next
case "-"
document.all.item("R" & Myarray(0)).innertext="+"
for i=1 to ubound(Myarray)
if eval("T" & Myarray(i) & ".summary")-eval("T" & Myarray(0) & ".summary")>=1 then
document.all.item("T" & Myarray(i)).style.display="none"
if eval("R" & Myarray(i) & ".innertext")="-" then
document.all.item("R" & Myarray(i)).innertext="+"
end if
end if
next
end select
set Myarray=nothing
end sub
Sub document_onselectstart
document.selection.clear
End Sub
if isobject(eval("Ta")) then
'subtree document.all("Ta").abbr
'subtree document.all("Ta").abbr
subtree document.all("Ta").abbr
subtree document.all("Ta").abbr
end if
</script>
Top
5 楼spear_nj(留个微笑给我)回复于 2005-08-04 14:34:20 得分 0
数据库我只能进行查询,不能进行update和insert等操作,字段内容就是上面的,没有其它的节点附加信息。节点必须自己根据字母的顺序来判断。Top
6 楼guishuanglin(蓝色枫林)回复于 2005-08-12 12:37:18 得分 0
madpolice(午夜狂龙) (
的结构,加上过滤数据就可以实现Top
7 楼spear_nj(留个微笑给我)回复于 2005-08-20 19:54:38 得分 0
我一个朋友给了我一个哈西结构的算法,用vbs结合js代码,可以不限级数的生成树,和资源管理器一样,爽,上面的方法我用不上。但还是谢谢。Top




