I managed to do it using TreeView. I have created two functions, one to populate TreeView if there's sub-directories and the other to populate TreeView if there's no folders.
First one:
private void PopulateTreeView_WithDirectories(DirectoryInfo dirInfo,TreeView treeView, TreeNode treeNode)
{
foreach (DirectoryInfo directory in dirInfo.GetDirectories())
{
TreeNode directoryNode = new TreeNode
{
Text = directory.Name,
Value = directory.FullName
};
if (treeNode == null)
{
treeView.Nodes.Add(directoryNode);
}
else
{
treeNode.ChildNodes.Add(directoryNode);
}
foreach (FileInfo file in directory.GetFiles())
{
TreeNode fileNode = new TreeNode
{
Text = file.Name,
Value = file.FullName,
Target = "_blank",
NavigateUrl = (new Uri(Server.MapPath("~/"))).MakeRelativeUri(new Uri(file.FullName).ToString()
};
directoryNode.ChildNodes.Add(fileNode);
}
directoryNode.CollapseAll();
PopulateTreeView_WithDirectories(directory, treeView, directoryNode);
}
}
Second one:
private void PopulateTreeView_WithFiles(DirectoryInfo dirInfo, TreeView treeView, TreeNode treeNode)
{
DirectoryInfo directory=dirInfo;
if(directory.Name !=null)
{
TreeNode directoryNode = new TreeNode
{
Text =directory.Name,
Value = directory.FullName
};
if (treeNode == null)
{
treeView.Nodes.Add(directoryNode);
}
else
{
treeNode.ChildNodes.Add(directoryNode);
}
foreach (FileInfo file in directory.GetFiles())
{
TreeNode fileNode = new TreeNode
{
Text = file.Name,
Value = file.FullName,
Target = "_blank",
NavigateUrl = (new Uri(Server.MapPath("~/"))).MakeRelativeUri(new Uri(file.FullName).ToString()
};
directoryNode.ChildNodes.Add(fileNode);
}
directoryNode.CollapseAll();
PopulateTreeView_WithDirectories(directory, treeView, directoryNode);
}
}
Hope It's gonna help others
Thanks,
Samira