You can see the code that uses the static GeTDrives method of the DriveInfo class to get a list of all installed drives, then iterates through them. For each fixed, formatted, and available (ready) drive, the code creates a new node containing details of the drive. It then sets the ImageUrl to the custom image, specifies that clicking this node will cause a postback that executes the “populate on demand” event handler, and adds the node to the treeView.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TreeView.aspx.cs" Inherits="TreeView" %>
<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="treeDir" runat="Server">
</asp:TreeView>
<asp:Label ID="lblError" runat="Server"></asp:Label>
</div>
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.IO;
public partial class TreeView : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
CreateTreeView();
}
private void CreateTreeView()
{
treeDir.Nodes.Clear();
TreeNode node = new TreeNode("My Computer", "Root");
node.SelectAction = TreeNodeSelectAction.None;
node.Expanded = true;
treeDir.Nodes.Add(node);
try
{
// get a list of installed drives
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
// only include fixed drives that are ready
if (d.DriveType == DriveType.Fixed && d.IsReady)
{
// create text for the TreeView to display
StringBuilder sb = new StringBuilder();
sb.Append(d.Name.Substring(0, 2));
sb.Append(" ");
sb.Append(d.VolumeLabel);
sb.Append(" (");
sb.Append(d.DriveFormat);
sb.Append(") ");
Double space = d.AvailableFreeSpace / 1024 / 1024;
sb.Append(space.ToString("#,###,###,##0"));
sb.Append(" MB available");
String theName = sb.ToString();
String theValue = d.Name;
// add a node to the TreeView with "drive" image
TreeNode child = new TreeNode(theName, theValue);
child.ImageUrl = "images/icon_drive.gif";
// specify postback for populating child nodes
child.SelectAction = TreeNodeSelectAction.Expand;
child.PopulateOnDemand = true;
node.ChildNodes.Add(child);
}
}
}
catch (Exception ex)
{
lblError.Text = "ERROR: " + ex.Message + "<p />";
}
}
}