Asp教程

通过asp实例结合结合ACCESS,MSSQL来更好的深入Asp学习 - 爬坡者

« 用ASP写的一个debug类NB叶子的一些防SQL函数 »

生成目录树结构的类

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
 
 %>
生成目录树结构的类

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80710

Copyright 2007-2008 papozhe.com [asp教程] All Rights Reserved.
浙ICP备07030537号
免责申明:所有文章除特别声明,均来自网上,主要为学习用!内容仅供参考,版权归原作者。如侵犯您利益,请来信告知.
Email:papozhe$Gmail.com QQ:76336503