ASP.NET directory listing
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
NextmainFiles = 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)
NextEnd 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 IfEnd 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