本程序有两文件test.asp 和tree.asp 还有一些图标文件<br>
1。test.asp 调用类生成树 代码如下<br>
<%@ language=vbscript %><br>
<html><br>
<head><br>
<link rel="stylesheet" href="tree.css"><br>
<title>tree</title><br>
</head><br>
<!– #include file="tree.asp" –><br>
<%<br>
<br>
========================================<br>
building a tree programatically<br>
========================================<br>
this approach would be best suited for building<br>
dynamic trees using for..next loops and such.<br>
<br>
set mytree2 = new tree<br>
mytree2.top = 10<br>
mytree2.left = 10<br>
mytree2.expandimage = "plus.gif"<br>
mytree2.collapseimage = "minus.gif"<br>
mytree2.leafimage = "webpage.gif"<br>
<br>
notice the indentation used to reprensent the hierarchy<br>
set node1 = mytree2.createchild("script")<br>
set subnode1 = node1.createchild("server")<br>
set secsubnode1 = subnode1.createchild("html")<br>
secsubnode1.createchild "<a href=""http://127.0.0.1/"">asp</a>"<br>
secsubnode1.createchild "<a href=""http://127.0.0.1/"">php</a>"<br>
secsubnode1.createchild "<a href=""http://127.0.0.1/"">jsp</a>"<br>
<br>
set subnode2 = node1.createchild("os")<br>
subnode2.createchild "<a href=""#"">winnt</a>"<br>
subnode2.createchild "<a href=""#"">win2000</a>"<br>
<br>
set node2 = mytree2.createchild("desktop")<br>
node2.createchild "<a href=""#"">area code lookup</a>"<br>
node2.createchild "<a href=""#"">arin based whois search</a>"<br>
node2.createchild "<a href=""#"">world time zone map</a>"<br>
<br>
mytree2.draw()<br>
<br>
set mytree2 = nothing<br>
<br>
%><br>
<br>
</body><br>
</html><br>
2。tree.asp 类的定义 代码如下<br>
<%<br>
******************************************************<br>
author: jacob gilley<br>
email: avis7@airmail.net<br>
my terms: you can use this control in anyway you see fit<br>
cause i have no means to enforce any guidelines<br>
or bs that most developers think they can get<br>
you to agree to by spouting out words like <br>
"intellectual property" and "the code gods".<br>
- viva la microsoft!<br>
******************************************************<br>
<br>
dim gbltreenodecount:gbltreenodecount = 1<br>
<br>
class treenode<br>
<br>
public value<br>
public expandimage<br>
public collapseimage<br>
public leafimage<br>
public expanded<br>
private mszname<br>
private mcolchildren<br>
private mbchildreninitialized<br>
<br>
public property get childcount()<br>
childcount = mcolchildren.count<br>
end property<br>
<br>
private sub class_initialize()<br>
mszname = "node" & cstr(gbltreenodecount)<br>
gbltreenodecount = gbltreenodecount + 1<br>
<br>
mbchildreninitialized = false<br>
expanded = false<br>
end sub <br>
<br>
private sub class_terminate()<br>
if mbchildreninitialized and isobject(mcolchildren) then<br>
mcolchildren.removeall()<br>
set mcolchildren = nothing<br>
end if<br>
end sub<br>
<br>
private sub initchildlist()<br>
set mcolchildren = server.createobject("scripting.dictionary")<br>
mbchildreninitialized = true<br>
end sub<br>
<br>
private sub loadstate()<br>
if request(mszname) = "1" or request("togglenode") = mszname then<br>
expanded = true<br>
end if<br>
end sub<br>
<br>
public function createchild(szvalue)<br>
<br>
if not mbchildreninitialized then initchildlist()<br>
<br>
set createchild = new treenode<br>
createchild.value = szvalue<br>
createchild.expandimage = expandimage<br>
createchild.collapseimage = collapseimage<br>
createchild.leafimage = leafimage<br>
<br>
mcolchildren.add mcolchildren.count + 1, createchild<br>
<br>
end function<br>
<br>
public sub draw()<br>
<br>
loadstate()<br>
<br>
response.write "<table border=""0"">" & vbcrlf<br>
response.write "<tr><td>" & vbcrlf<br>
<br>
if expanded then<br>
response.write "<a href=""javascript:collapsenode(" & mszname & ")""><img src=""" & collapseimage & """ border=""0""></a>" & vbcrlf<br>
elseif not mbchildreninitialized then<br>
response.write "<img src=""" & leafimage & """ border=0>" & vbcrlf<br>
else<br>
response.write "<a href=""javascript:expandnode(" & mszname & ")""><img src=""" & expandimage & """ border=""0""></a>" & vbcrlf<br>
end if<br>
<br>
response.write "</td>" & vbcrlf<br>
response.write "<td>" & value & "</td></tr>" & vbcrlf<br>
<br>
if expanded then<br>
response.write "<input type=""hidden"" name=""" & mszname & """ value=""1"">" & vbcrlf<br>
<br>
if mbchildreninitialized then<br>
response.write "<tr><td> </td>" & vbcrlf<br>
response.write "<td>" & vbcrlf<br>
<br>
for each childnode in mcolchildren.items<br>
childnode.draw()<br>
next<br>
<br>
response.write "</td>" & vbcrlf<br>
response.write "</tr>" & vbcrlf<br>
end if<br>
end if<br>
<br>
response.write "</table>" & vbcrlf<br>
<br>
end sub<br>
<br>
end class<br>
<br>
<br>
class tree<br>
<br>
public top<br>
public left<br>
public expandimage<br>
public collapseimage<br>
public leafimage<br>
private mszposition<br>
private mcolchildren<br>
<br>
public property let absolute(bdata)<br>
if bdata then mszposition = "absolute" else mszposition = "relative"<br>
end property<br>
<br>
public property get absolute()<br>
absolute = cbool(mszposition = "absolute")<br>
end property<br>
<br>
private sub class_initialize()<br>
set mcolchildren = server.createobject("scripting.dictionary")<br>
mntop = 0<br>
mnleft = 0<br>
mszposition = "absolute"<br>
end sub <br>
<br>
private sub class_terminate()<br>
mcolchildren.removeall()<br>
set mcolchildren = nothing<br>
end sub<br>
<br>
public function createchild(szvalue)<br>
<br>
set createchild = new treenode<br>
<br>
createchild.value = szvalue<br>
createchild.expandimage = expandimage<br>
createchild.collapseimage = collapseimage<br>
createchild.leafimage = leafimage<br>
<br>
mcolchildren.add mcolchildren.count + 1, createchild<br>
<br>
end function<br>
<br>
public sub loadtemplate(szfilename)<br>
dim objworkingnode<br>
dim colnodestack<br>
dim fsobj, tsobj<br>
dim szline<br>
dim ncurrdepth, nnextdepth<br>
<br>
set colnodestack = server.createobject("scripting.dictionary")<br>
set fsobj = createobject("scripting.filesystemobject")<br>
set tsobj = fsobj.opentextfile(szfilename, 1)<br>
<br>
ncurrdepth = 0<br>
while not tsobj.atendofline<br>
nnextdepth = 1<br>
szline = tsobj.readline()<br>
<br>
if ncurrdepth = 0 then<br>
set objworkingnode = createchild(trim(szline))<br>
ncurrdepth = 1<br>
else<br>
while mid(szline,nnextdepth,1) = vbtab or mid(szline,nnextdepth,1) = " "<br>
nnextdepth = nnextdepth + 1<br>
wend<br>
<br>
if nnextdepth > 1 then szline = trim(mid(szline,nnextdepth))<br>
<br>
if szline <> "" then<br>
if nnextdepth > ncurrdepth then<br>
if colnodestack.exists(ncurrdepth) then<br>
set colnodestack.item(ncurrdepth) = objworkingnode<br>
else<br>
colnodestack.add ncurrdepth, objworkingnode<br>
end if<br>
<br>
set objworkingnode = objworkingnode.createchild(szline)<br>
<br>
ncurrdepth = ncurrdepth + 1<br>
elseif nnextdepth <= ncurrdepth then<br>
<br>
if nnextdepth > 1 then <br>
<br>
nnextdepth = nnextdepth – 1<br>
while not colnodestack.exists(nnextdepth) and nnextdepth > 1<br>
nnextdepth = nnextdepth – 1<br>
wend<br>
<br>
set objworkingnode = colnodestack.item(nnextdepth)<br>
set objworkingnode = objworkingnode.createchild(szline)<br>
<br>
nnextdepth = nnextdepth + 1<br>
else<br>
set objworkingnode = createchild(szline)<br>
end if<br>
<br>
ncurrdepth = nnextdepth<br>
end if<br>
end if<br>
<br>
end if<br>
wend<br>
<br>
tsobj.close()<br>
set tsobj = nothing <br>
set fsobj = nothing<br>
<br>
colnodestack.removeall()<br>
set colnodestack = nothing<br>
<br>
end sub<br>
<br>
<br>
public sub draw()<br>
<br>
addclientscript()<br>
<br>
response.write "<div id=""treectrl"" style=""left: " & left & "px; top: " & top & "px; position: " & mszposition & ";"">" & vbcrlf<br>
response.write "<form name=""treectrlfrm"" action=""" & request.servervariables("script_name") & """ method=""get"">" & vbcrlf<br>
response.write "<table border=""0"">" & vbcrlf<br>
response.write "<tr><td>" & vbcrlf<br>
<br>
for each childnode in mcolchildren.items<br>
childnode.draw()<br>
next<br>
<br>
response.write "</td></tr>" & vbcrlf<br>
response.write "</table>" & vbcrlf<br>
<br>
response.write "<input type=""hidden"" name=""togglenode"" value="""">" & vbcrlf<br>
response.write "</form>" & vbcrlf<br>
response.write "</div>" & vbcrlf<br>
<br>
end sub<br>
<br>
private sub addclientscript()<br>
%><br>
<script language="javascript"><br>
<br>
function expandnode(sznodename)<br>
{<br>
if(document.layers != null) {<br>
document.treectrl.document.treectrlfrm.togglenode.value = sznodename;<br>
document.treectrl.document.treectrlfrm.submit();<br>
}<br>
else {<br>
document.all["treectrlfrm"].togglenode.value = sznodename;<br>
document.all["treectrlfrm"].submit();<br>
}<br>
}<br>
<br>
function collapsenode(sznodename)<br>
{<br>
if(document.layers != null) {<br>
document.treectrl.document.treectrlfrm.elements[sznodename].value = -1;<br>
document.treectrl.document.treectrlfrm.submit();<br>
}<br>
else {<br>
document.treectrlfrm.elements[sznodename].value = -1;<br>
document.treectrlfrm.submit();<br>
}<br>
}<br>
<br>
</script><br>
<% <br>
end sub<br>
<br>
end class<br>
<br>
%><br>
演示地址:http://www.cnaspol.com/templatetree/test.asp
关于生成目录树结构的类
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 关于生成目录树结构的类
相关推荐
- 暂无文章
