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

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

 

Attachment: image.png
Published Saturday, December 20, 2008 5:46 AM by stoian bucovich

Comments

No Comments

Leave a Comment

(required) 
(required) 
(optional)
(required)