In this post i am going to demonstrate how you could achive directory listing.
aspx page:
<%@ Page Language="VB"
AutoEventWireup="false"
CodeFile="DirectoryListing.aspx.vb"
Inherits="DirectoryListing" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView id="treeImages" runat="server" NodeIndent="10" NodeStyle-HorizontalPadding="5" />
</div>
</form>
</body> </html>
and code behind:
#Region " Imports "
Imports System.IO
#End Region Partial Class DirectoryListing
Inherits System.Web.UI.Page
#Region " Functions "
Private Function GetFileSysEntryName(ByVal fullName As String) As StringDim index As Integer = fullName.LastIndexOf("\")
Return fullName.Substring(index + 1)
End Function #End Region
#Region " Private Method "
Private Sub LoadTreeImages()
Const FILE As String = "images/image.png"
Const FOLDER As String = "images/folder.png"
Dim path As String = Server.MapPath("images")
Dim fileList, mainFiles As String()
Dim dirList, subdirList, subSeconddirList As String() Dim dirNode, fileNode, dNode, dFileNode, secondNode As TreeNode
Dim fName, dirName, subdirName, subSeconddirName As String
treeImages.Nodes.Clear()
dirList = Directory.GetDirectories(Server.MapPath("images/"))
For Each dirEntry As String In dirList
If dirEntry = path Then Continue For
dirName = GetFileSysEntryName(dirEntry)
dirNode = New TreeNode(dirName)
dirNode.SelectAction = TreeNodeSelectAction.Expand
dirNode.Collapse()
dirNode.ImageUrl = FOLDER
treeImages.Nodes.Add(dirNode)
subdirList = Directory.GetDirectories(Server.MapPath("images/" & dirName))For Each subdirFolder As String In subdirList
subdirName = GetFileSysEntryName(subdirFolder)
dNode = New TreeNode(subdirName)
dNode.SelectAction = TreeNodeSelectAction.Expand
dNode.Collapse()
dNode.ImageUrl = FOLDER
dirNode.ChildNodes.Add(dNode)
subSeconddirList = Directory.GetDirectories(Server.MapPath("images/" & dirName & "/" & subdirName))For Each subSeconddirFolder As String In subSeconddirList
subSeconddirName = GetFileSysEntryName(subSeconddirFolder)
secondNode = New TreeNode(subSeconddirName)
secondNode.SelectAction = TreeNodeSelectAction.Expand
secondNode.Collapse()
secondNode.ImageUrl = FOLDER
dNode.ChildNodes.Add(secondNode)
fileList = Directory.GetFiles(subSeconddirFolder)
For Each subSecondfileEntry As String In fileList
fName = GetFileSysEntryName(subSecondfileEntry)
dFileNode = New TreeNode(fName)
dFileNode.Target = "_blank"
dFileNode.NavigateUrl = "~/images/" & dirName & "/" & subdirName & "/" & subSeconddirName & "/" & fName
dFileNode.SelectAction = TreeNodeSelectAction.Select
dFileNode.ImageUrl = FILE
secondNode.ChildNodes.Add(dFileNode)
Next
Next
fileList = Directory.GetFiles(subdirFolder)
For Each subfileEntry As String In fileList
fName = GetFileSysEntryName(subfileEntry)
dFileNode = New TreeNode(fName)
dFileNode.Target = "_blank"
dFileNode.NavigateUrl = "~/images/" & dirName & "/" & subdirName & "/" & fName
dFileNode.SelectAction = TreeNodeSelectAction.Select
dFileNode.ImageUrl = FILE
dNode.ChildNodes.Add(dFileNode)
Next
Next
fileList = Directory.GetFiles(dirEntry)
For Each fileEntry As String In fileList
fName = GetFileSysEntryName(fileEntry)
fileNode = New TreeNode(fName)
fileNode.Target = "_blank"
fileNode.NavigateUrl = "~/images/" & dirName & "/" & fName
fileNode.SelectAction = TreeNodeSelectAction.Select
fileNode.ImageUrl = FILE
dirNode.ChildNodes.Add(fileNode)
Next
Next
mainFiles = Directory.GetFiles(Server.MapPath("images/"))For Each files As String In mainFiles
fName = GetFileSysEntryName(files)
fileNode = New TreeNode(fName)
fileNode.Target = "_blank"
fileNode.NavigateUrl = "~/images/" & fName
fileNode.ImageUrl = FILE
treeImages.Nodes.Add(fileNode)
Next
End Sub #End Region
#Region " Page Events "
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
LoadTreeImages()
End If
End Sub #End Region
End Class
Where I did directory structure image and two files in it that I am using for showing in the tree view files and folders (folder.png and image.png). This example doesn't do full directory listing. It just does a few level deeper.
Hope it helps
Best regards,
Stoyan Bukovich
Executive manager
SNB Solutions
Cell.: +52 6241 616969
E-mail:
s.bucovich@snb-bg.comWeb:
www.snb-bg.com