一段递归生成类似Windows资源管理器一样效果的树状菜单的代码
<HTML>
<HEAD>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<SCRIPT lanuage="Jscript">
function turnit(ss,ii,aa)
{
if (ss.style.display=="none")
{ss.style.display="";
aa.style.display="";
ii.src="minus.gif";
}
else
{ss.style.display="none";
aa.style.display="none";
ii.src="plus.gif";}
}
function onlyclose(ss,ii,aa)
{
ss.style.display="none";
aa.style.display="none";
ii.src="plus.gif";
}
</SCRIPT>
</HEAD>
<BODY bgColor=#99CCFF>
<%
dim dbConn
dim IDIndex
IDIndex = 0
'建立数据库连接
Set dbConn = Server.CreateObject("Adodb.Connection")
dbConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("test.mdb")
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''生成文件类型树的递归函数,传入参数:NowItem为树节点的ID ''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub DoItem(NowItem)
dim rsTest
dim YoungerBrother '下一个兄弟节点的ID
dim OlderSon '第一个字节点的ID
'建立记录集
set rsTest = Server.CreateObject("Adodb.recordset")
'生成sql语句,操作Doc_TypeTree表
strSql = "select * from tab_test where ID = '" & NowItem & "'"
'生成记录集
rsTest.open strSql,dbConn,1,3
if rsTest.eof then
rsTest.close
set recDosType = nothing
exit sub
end if
YoungerBrother = trim(rsTest("BrotherNode") & "")
OlderSon = trim(rsTest("SonNode") & "")
NodeID = trim(rsTest("ID") & "")
NodeName = trim(rsTest("NodeName") & "")
'显示子节点
if OlderSon = "" or OlderSon = "00" then '当此项无子项时,输出相应的代码
response.write "<TR>" & chr(10)
response.write "<TD> </TD>" & chr(10)
response.write "<TD>"
response.write "<A href='test'>" & NodeName & "</A>"
response.write "</TD>" & chr(10)
response.write "</TR>" & chr(10)
else
'*1.显示本项内容
response.write "<TR>" & chr(10)
response.write "<TD language=Jscript onmouseup=turnit(" & _
"Content" & IDIndex & "," & _
"img" & IDIndex & "," & _
"Aux" & IDIndex & ");>" & chr(10)
response.write "<IMG height=9 id=img" & IDIndex & " src='plus.gif' width=9>" & chr(10)
response.write "</TD>" & chr(10)
response.write "<TD>" & chr(10)
response.write "<A href='Frame_4_publish.asp?DocTypeID=" & _
NodeID & "' target='frmFour'>" & NodeName & _
"</A>" & chr(10)
response.write "</TD>" & chr(10)
response.write "</TR>" & chr(10)
'*2.输出子孙树头代码
response.write "<TR>" & chr(10)
response.write "<TD id=Aux" & IDIndex & " style='display: none'> </TD>" & chr(10)
response.write "<TD id=Content" & IDIndex & " style='display: none'>" & chr(10)
response.write "<TABLE border='0'>"
IDIndex = IDIndex + 1
'*3.输出子孙树代码
call DoItem(OlderSon)
'*4.输出子孙树尾代码
response.write "</TABLE>"
response.write "</TD>" & chr(10)
response.write "</TR>" & chr(10)
end if
if YoungerBrother <> "" and YoungerBrother <> "00" then
call DoItem(YoungerBrother)
end if
rsTest.close
set rsTest = nothing
end Sub
response.write "<table border='0'>"
call DoItem("01")
response.write "</table>"
dbConn.close
set dbConn = nothing
%>
</BODY>
</HTML>
附录:数据结构及测试数据
数据库说明
ID:节点ID
NodeName:节点名称
BrotherNode:兄弟节点,当前节点的下一个兄弟节点的ID
SonNode:子节点,当前节点的第一个子节点的ID
测试数据
ID NodeName ParentNode SonNode BrotherNode
01 管理文挡 00 0101 02
02 开发文挡 00 0201 03
03 产品文挡 00 00 00
0101 制度规定 01 00 0102
0102 计划 01 00 0103
0103 总结 01 00 00
0201 参考文挡 02 00 0202
0202 开发进度 02 00 0203
0203 需求分析 02 00 0204
0204 总体设计 02 00 0205
0205 概要设计 02 00 0206
0206 详细设计 02 020601 0207
0207 编码文挡 02 00 0208
0208 测试文挡 02 00 00
020601 数据库详细设计 00 020602 0206
020602 GIS详细设计 00 020603 0206
020603 接口详细设计 00 020604 0206
020604 界面详细设计 00 00 0206
版权声明:
作者:Kiyo
链接:https://www.wkiyo.cn/html/2008-01/i148.html
来源:Kiyo's space
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论