100分急求ASP无限级目录树!!!

100分急求ASP无限级目录树!!!,第1张

ASP+ACCESS实现的无限级目录

下载地址:http://www.knowsky.com/download/treemenu.rar

关键代码:

<%

set conn=server.createobject("ADODB.CONNECTION")

connstr="DBQ="+server.mappath("db1.mdb")+"DefaultDir=DRIVER={Microsoft Access Driver (*.mdb)}"

conn.open connstr

function menu(id)

set rs=server.CreateObject("adodb.recordset")

sql="select * from menu where id1="&id&" order by url,id"

rs.open sql,conn,1,1

if rs.recordcount=0 then

rs.close

set rs=nothing

exit function

end if

response.write("<table border='0' cellspacing='0' cellpadding='0'>")

i=1

while not rs.eof

if len(rs("url"))>0 then

if i=rs.recordcount then

menutype="file1"

else

menutype="file"

end if

menuname="<a href="http://www.lukin.cn/web/asp/2006-2-22/&rs(url)&" target='_blank'>"&rs("menuname")&"</a>"

onmouseup=""

else

if i=rs.recordcount then

menutype="menu3"

listtype="list1"

onmouseup="with(eval('id"&rs("id")&"'))if(style.display==''){style.display='none'this.className='menu3'}else{style.display=''this.className='menu4'}"

else

menutype="menu1"

listtype="list"

onmouseup="with(eval('id"&rs("id")&"'))if(style.display==''){style.display='none'this.className='menu1'}else{style.display=''this.className='menu2'}"

end if

menuname=rs("menuname")

end if

%>

<tr>

<td class="<%= menutype%>" onMouseUp="<%= onmouseup%>"><%= menuname%></td>

</tr>

<%if len(rs("url"))<3 then%>

<tr id="id<%= rs("id")%>" style="display:none">

<td class="<%= listtype%>"><%menu(rs("id"))%></td>

</tr>

<%

end if

rs.movenext

i=i+1

wend

response.write("</table>")

rs.close

set rs=nothing

end function

%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">

<title>=========无限级目录树=========http://www.knowsky.com</title>

<style type="text/css">

<!--

.menu1 {

background-image: url(folder1.gif)

background-repeat: no-repeat

height: 17px

left: 32px

padding-left: 32px

cursor: hand

}

.menu2 {

background-image: url(folder2.gif)

background-repeat: no-repeat

height: 17px

left: 32px

padding-left: 32px

cursor: hand

}

.menu3 {

background-image: url(folder3.gif)

background-repeat: no-repeat

height: 17px

left: 32px

padding-left: 32px

cursor: hand

}

.menu4 {

background-image: url(folder4.gif)

background-repeat: no-repeat

height: 17px

left: 32px

padding-left: 32px

cursor: hand

}

.list {

padding-left: 20px

background-image: url(list.gif)

background-repeat: repeat-y

}

.list1 {

padding-left: 20px

}

.file {

background-image: url(file.gif)

background-repeat: no-repeat

height: 16px

cursor: hand

padding-left: 32px

}

.file1 {

background-image: url(file1.gif)

background-repeat: no-repeat

height: 16px

cursor: hand

padding-left: 32px

}

body {

font-size: 9pt

color: #000000

background-color: #FFFFFF

}

a:link {

font-size: 9pt

color: #000000

text-decoration: none

}

a:visited {

font-size: 9pt

color: #000000

text-decoration: none

}

a:hover {

font-size: 9pt

color: #0000FF

text-decoration: none

position: relative

right: 1px

bottom: 1px

}

a:active {

font-size: 9pt

color: #000000

text-decoration: none

}

-->

</style>

</head>

<body>

<a href="http://www.knowsky.com/" target="_blank">http://www.knowsky.com/</a>提供最新下载《<a href="http://www.lukin.cn/web/asp/2006-2-22/menu.asp>管理</a>》<br><%

menu 0

conn.close

set conn=nothing

%>

</body>

</html>

无限级目录树最优算法的新研究:1。目录树的数据结构 2。探讨具体应用中数据库的查询复杂度。 表结构: id(编号)pid(父节点)nodepath(路径)nodetype(状态) 示例数据:1 0 0>F 2 0 0>D 3 2 0>2>D 4 3 0>2>3>F 测试项目: 1。获取当前节点的父节点:复杂度:O(n) 2。获取当前节点的下级子节点: 复杂度:O(n) 3。获取当前节点的所有子孙节点: 复杂度:O(n) 4。获取当前节点的所有直系祖宗节点: 复杂度:O(n) 5。删除、新增节点时比较容易实现,主要是实现节点转移有点麻烦:设被转移 的节点为S,转移到的目的节点为T,则S.nodepath=T.nodepath+T.id+'>'同时检 查S是否有兄弟节点,无则S的父节点的nodetype改为F检查T的nodetype,如为F 则改为D;修改表中S的子孙节点nodepath。一般这种情况出现的几率很低。 说明:本人的初衷是将该结构主要应用在类资源管理器的目录树中,根据 nodetype,画树的时候不必再搜索数据库去判断该节点是否还有子节点。至于用 在bbs帖子树,像帖子树中有一个帖子最新的,就必须将整个帖子树置顶这样的 情况,有种实用解决办法:增加一个字段rootid(帖子的根帖):select distanct rootid from table order by postdate。 本数据结构支持无限级树,关于树的深度,可以根据实际情况而定nodepath的长 度。最后,我为什么用“最优”,主要有激将之意,抛砖引玉,只是希望能引起 广大高手的注意,能提出个人独特建议,在交流上作广泛的讨论。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10032781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存