Here I have created sample.In this I have used recursion to get selected node.
HTML
<div>
<h3>
Vehicle Details</h3>
<hr />
<asp:TreeView ID="TreeView1" runat="server" ImageSet="XPFileExplorer" NodeIndent="15"
ShowCheckBoxes="Leaf">
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="2px"
NodeSpacing="0px" VerticalPadding="2px"></NodeStyle>
<ParentNodeStyle Font-Bold="False" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px"
VerticalPadding="0px" />
</asp:TreeView>
<br />
<br />
<asp:Button Text="Save" runat="server" OnClick="Save" />
<br />
<br />
<asp:GridView ID="gvFiles" runat="server" AutoGenerateColumns="true" />
</div>
Code
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
if (!this.IsPostBack)
{
DriveInfo[] drives = DriveInfo.GetDrives();
DirectoryInfo[] dirInfo = null;
DirectoryInfo rootInfo = null;
foreach (DriveInfo item in drives)
{
if (item.IsReady)
{
dirInfo = item.RootDirectory.GetDirectories("Vehicles");
if (dirInfo.Length > 0)
{
rootInfo = dirInfo[0];
break;
}
}
}
this.PopulateTreeView(rootInfo, null);
}
}
}
private void PopulateTreeView(DirectoryInfo dirInfo, TreeNode treeNode)
{
foreach (DirectoryInfo directory in dirInfo.GetDirectories())
{
TreeNode directoryNode = new TreeNode
{
Text = directory.Name,
Value = directory.FullName
};
if (treeNode == null)
{
TreeView1.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);
}
PopulateTreeView(directory, directoryNode);
}
}
protected void Save(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[3] { new DataColumn("FileName"), new DataColumn("FileSize(Bytes)", typeof(int)), new DataColumn("FileModifiedDate", typeof(DateTime)) });
DataTable selectedFileData = GetSelectedFiles(TreeView1.Nodes, dt);
// Write Here Code to Save Data.
gvFiles.DataSource = dt;
gvFiles.DataBind();
}
private DataTable GetSelectedFiles(TreeNodeCollection nodes, DataTable dtSelectedFiles)
{
if (nodes != null)
{
foreach (TreeNode node in nodes)
{
if (node.Checked)
{
FileInfo file = new FileInfo(node.Value);
dtSelectedFiles.Rows.Add(file.Name, file.Length, file.LastWriteTime);
}
GetSelectedFiles(node.ChildNodes, dtSelectedFiles);
}
}
return dtSelectedFiles;
}
Screenshot
