asp下生成目录树结构的类

所属分类: 网络编程 / ASP编程 阅读数: 1395
收藏 0 赞 0 分享

关于生成目录树结构的类

本程序有两文件test.asp 和tree.asp 还有一些图标文件

1。test.asp 调用类生成树 代码如下

<%@ Language=VBScript %> 
<html> 
<head> 
<link rel="stylesheet" href="tree.css"> 
<title>tree</title> 
</head> 
<!-- #include file="tree.asp" --> 
<% 

'======================================== 
' BUILDING A TREE PROGRAMATICALLY 
'======================================== 
' This approach would be best suited for building 
' dynamic trees using For..Next loops and such. 

Set MyTree2 = New Tree 
MyTree2.Top = 10 
MyTree2.Left = 10 
MyTree2.ExpandImage = "plus.gif" 
MyTree2.CollapseImage = "minus.gif" 
MyTree2.LeafImage = "webpage.gif" 

' Notice the indentation used to reprensent the hierarchy 
Set Node1 = MyTree2.CreateChild("script") 
Set SubNode1 = Node1.CreateChild("server") 
Set secSubNode1 = SubNode1.CreateChild("html") 
secSubNode1.CreateChild "<A HREF=""http://127.0.0.1/"">asp</A>" 
secSubNode1.CreateChild "<A HREF=""http://127.0.0.1/"">php</A>" 
secSubNode1.CreateChild "<A HREF=""http://127.0.0.1/"">jsp</A>" 

Set SubNode2 = Node1.CreateChild("os") 
SubNode2.CreateChild "<A HREF=""#"">winnt</A>" 
SubNode2.CreateChild "<A HREF=""#"">win2000</A>" 

Set Node2 = MyTree2.CreateChild("Desktop") 
Node2.CreateChild "<A HREF=""#"">Area Code Lookup</A>" 
Node2.CreateChild "<A HREF=""#"">Arin Based Whois Search</A>" 
Node2.CreateChild "<A HREF=""#"">World Time Zone Map</A>" 

MyTree2.Draw() 

Set MyTree2 = Nothing 

%> 

</BODY> 
</HTML> 

2。tree.asp 类的定义 代码如下

<% 
'****************************************************** 
' Author: Jacob Gilley 
' Email: avis7@airmail.net 
' My Terms: You can use this control in anyway you see fit 
' cause I have no means to enforce any guidelines 
' or BS that most developers think they can get 
' you to agree to by spouting out words like 
' "intellectual property" and "The Code Gods". 
' - Viva la Microsoft! 
'****************************************************** 

Dim gblTreeNodeCount:gblTreeNodeCount = 1 

Class TreeNode 

Public Value 
Public ExpandImage 
Public CollapseImage 
Public LeafImage 
Public Expanded 
Private mszName 
Private mcolChildren 
Private mbChildrenInitialized 

Public Property Get ChildCount() 
ChildCount = mcolChildren.Count 
End Property 

Private Sub Class_Initialize() 
mszName = "node" & CStr(gblTreeNodeCount) 
gblTreeNodeCount = gblTreeNodeCount + 1 

mbChildrenInitialized = False 
Expanded = False 
End Sub 

Private Sub Class_Terminate() 
If mbChildrenInitialized And IsObject(mcolChildren) Then 
mcolChildren.RemoveAll() 
Set mcolChildren = Nothing 
End If 
End Sub 

Private Sub InitChildList() 
Set mcolChildren = Server.CreateObject("Scripting.Dictionary") 
mbChildrenInitialized = True 
End Sub 

Private Sub LoadState() 
If Request(mszName) = "1" Or Request("togglenode") = mszName Then 
Expanded = True 
End If 
End Sub 

Public Function CreateChild(szValue) 

If Not mbChildrenInitialized Then InitChildList() 

Set CreateChild = New TreeNode 
CreateChild.Value = szValue 
CreateChild.ExpandImage = ExpandImage 
CreateChild.CollapseImage = CollapseImage 
CreateChild.LeafImage = LeafImage 

mcolChildren.Add mcolChildren.Count + 1, CreateChild 

End Function 

Public Sub Draw() 

LoadState() 

Response.Write "<table border=""0"">" & vbCrLf 
Response.Write "<tr><td>" & vbCrLf 

If Expanded Then 
Response.Write "<a href=""javascript:collapseNode('" & mszName & "')""><img src=""" & CollapseImage & """ border=""0""></a>" & vbCrLf 
ElseIf Not mbChildrenInitialized Then 
Response.Write "<img src=""" & LeafImage & """ border=0>" & vbCrLf 
Else 
Response.Write "<a href=""javascript:expandNode('" & mszName & "')""><img src=""" & ExpandImage & """ border=""0""></a>" & vbCrLf 
End If 

Response.Write "</td>" & vbCrLf 
Response.Write "<td>" & Value & "</td></tr>" & vbCrLf 

If Expanded Then 
Response.Write "<input type=""hidden"" name=""" & mszName & """ value=""1"">" & vbCrLf 

If mbChildrenInitialized Then 
Response.Write "<tr><td> </td>" & vbCrLf 
Response.Write "<td>" & vbCrLf 

For Each ChildNode In mcolChildren.Items 
ChildNode.Draw() 
Next 

Response.Write "</td>" & vbCrLf 
Response.Write "</tr>" & vbCrLf 
End If 
End If 

Response.Write "</table>" & vbCrLf 

End Sub 

End Class 


Class Tree 

Public Top 
Public Left 
Public ExpandImage 
Public CollapseImage 
Public LeafImage 
Private mszPosition 
Private mcolChildren 

Public Property Let Absolute(bData) 
If bData Then mszPosition = "absolute" Else mszPosition = "relative" 
End Property 

Public Property Get Absolute() 
Absolute = CBool(mszPosition = "absolute") 
End Property 

Private Sub Class_Initialize() 
Set mcolChildren = Server.CreateObject("Scripting.Dictionary") 
mnTop = 0 
mnLeft = 0 
mszPosition = "absolute" 
End Sub 

Private Sub Class_Terminate() 
mcolChildren.RemoveAll() 
Set mcolChildren = Nothing 
End Sub 

Public Function CreateChild(szValue) 

Set CreateChild = New TreeNode 

CreateChild.Value = szValue 
CreateChild.ExpandImage = ExpandImage 
CreateChild.CollapseImage = CollapseImage 
CreateChild.LeafImage = LeafImage 

mcolChildren.Add mcolChildren.Count + 1, CreateChild 

End Function 

Public Sub LoadTemplate(szFileName) 
Dim objWorkingNode 
Dim colNodeStack 
Dim fsObj, tsObj 
Dim szLine 
Dim nCurrDepth, nNextDepth 

Set colNodeStack = Server.CreateObject("Scripting.Dictionary") 
Set fsObj = CreateObject("Scripting.FileSystemObject") 
Set tsObj = fsObj.OpenTextFile(szFileName, 1) 

nCurrDepth = 0 
While Not tsObj.AtEndOfLine 
nNextDepth = 1 
szLine = tsObj.ReadLine() 

If nCurrDepth = 0 Then 
Set objWorkingNode = CreateChild(Trim(szLine)) 
nCurrDepth = 1 
Else 
While Mid(szLine,nNextDepth,1) = vbTab Or Mid(szLine,nNextDepth,1) = " " 
nNextDepth = nNextDepth + 1 
WEnd 

If nNextDepth > 1 Then szLine = Trim(Mid(szLine,nNextDepth)) 

If szLine <> "" Then 
If nNextDepth > nCurrDepth Then 
If colNodeStack.Exists(nCurrDepth) Then 
Set colNodeStack.Item(nCurrDepth) = objWorkingNode 
Else 
colNodeStack.Add nCurrDepth, objWorkingNode 
End If 

Set objWorkingNode = objWorkingNode.CreateChild(szLine) 

nCurrDepth = nCurrDepth + 1 
ElseIf nNextDepth <= nCurrDepth Then 

If nNextDepth > 1 Then 

nNextDepth = nNextDepth - 1 
While Not colNodeStack.Exists(nNextDepth) And nNextDepth > 1 
nNextDepth = nNextDepth - 1 
WEnd 

Set objWorkingNode = colNodeStack.Item(nNextDepth) 
Set objWorkingNode = objWorkingNode.CreateChild(szLine) 

nNextDepth = nNextDepth + 1 
Else 
Set objWorkingNode = CreateChild(szLine) 
End If 

nCurrDepth = nNextDepth 
End If 
End If 

End If 
WEnd 

tsObj.Close() 
Set tsObj = Nothing 
Set fsObj = Nothing 

colNodeStack.RemoveAll() 
Set colNodeStack = Nothing 

End Sub 


Public Sub Draw() 

AddClientScript() 

Response.Write "<div id=""treectrl"" style=""left: " & Left & "px; top: " & Top & "px; position: " & mszPosition & ";"">" & vbCrLf 
Response.Write "<form name=""treectrlfrm"" action=""" & Request.ServerVariables("SCRIPT_NAME") & """ method=""get"">" & vbCrLf 
Response.Write "<table border=""0"">" & vbCrLf 
Response.Write "<tr><td>" & vbCrLf 

For Each ChildNode In mcolChildren.Items 
ChildNode.Draw() 
Next 

Response.Write "</td></tr>" & vbCrLf 
Response.Write "</table>" & vbCrLf 

Response.Write "<input type=""hidden"" name=""togglenode"" value="""">" & vbCrLf 
Response.Write "</form>" & vbCrLf 
Response.Write "</div>" & vbCrLf 

End Sub 

Private Sub AddClientScript() 
%> 
<script language="JavaScript"> 

function expandNode(szNodeName) 
{ 
if(document.layers != null) { 
document.treectrl.document.treectrlfrm.togglenode.value = szNodeName; 
document.treectrl.document.treectrlfrm.submit(); 
} 
else { 
document.all["treectrlfrm"].togglenode.value = szNodeName; 
document.all["treectrlfrm"].submit(); 
} 
} 

function collapseNode(szNodeName) 
{ 
if(document.layers != null) { 
document.treectrl.document.treectrlfrm.elements[szNodeName].value = -1; 
document.treectrl.document.treectrlfrm.submit(); 
} 
else { 
document.treectrlfrm.elements[szNodeName].value = -1; 
document.treectrlfrm.submit(); 
} 
} 

</script> 
<% 
End Sub 

End Class 

%> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

asp(vbs)fso OpenTextFile方法参数说明

OpenTextFile是asp语言中的一个方法,打开指定的文件并返回一个 TextStream 对象,可以通过这个对象对文件进行读、写或追加
收藏 0 赞 0 分享

IIS7.5调用asp页面出现800a0e7a的解决办法

本文给大家分享的是在windows2008R2 64位系统中出现了ADODB.Connection 错误 '800a0e7a'的解决办法,方法很简单,可是处理过程却很曲折,这里推荐给大家,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

ImageMagickObject获取图片的信息无返回值的解决办法

这篇文章主要介绍了ImageMagickObject获取图片的信息无返回值的解决办法,非常简单,加上format参数即可,需要的朋友可以参考下
收藏 0 赞 0 分享

ASP实现强制图片下载函数

最近做的一个asp项目需要强制下载图片,我在网上找了很多关于下载远程图片的ASP代码,但测试结果都不行。没办法只好自己操刀了,有什么纰漏的地方还请大家指出。
收藏 0 赞 0 分享

asp实现禁止搜索引擎蜘蛛访问的代码

这篇文章主要介绍了asp实现禁止搜索引擎蜘蛛访问的代码,十分的简单实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

asp、html、js 禁止缓存的代码

本文给大家分享的是在asp、html、js中强制不缓存的方法,十分的简单实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

asp实现带刷新功能的验证码代码

本文给大家分享的是一段使用asp实现的验证码功能,而且是带刷新的,代码非常简洁,非常实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

asp获得浏览器agent信息代码

最近做的一个项目中需要使用asp来获取浏览器的agent信息,好久都不玩ASP了,先度娘一下吧,把结果总结一下分享给大家。
收藏 0 赞 0 分享

ASP中只有UrlEncode,没有Urldecode问题的解决方法?

这篇文章主要介绍了ASP中只有UrlEncode,没有Urldecode问题的解决方法? ,需要的朋友可以参考下
收藏 0 赞 0 分享

对象不支持此属性或方法: Session.CodePage = 936 解决方法

这篇文章主要介绍了对象不支持此属性或方法: Session.CodePage = 936 解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多