Step 1: in design
step 2
public partial class DirectoryTree : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["Path"])))
{
this.RadTreeView1.Nodes.Clear();
DirectoryInfo dir = new DirectoryInfo(Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["Path"]));
RadTreeNode node = new RadTreeNode(dir.Name);
LoadDirectoriesAndFiles(dir, node);
this.RadTreeView1.Nodes.Add(node);
SortNodes(RadTreeView1.Nodes);
}
}
// Load Directory and file from path
private void LoadDirectoriesAndFiles(DirectoryInfo dir, RadTreeNode parentNode)
{
foreach (FileInfo fileInfo in dir.GetFiles())
{
RadTreeNode fileNode = new RadTreeNode(fileInfo.Name);
parentNode.Nodes.Add(fileNode);
}
foreach (DirectoryInfo directoryInfo in dir.GetDirectories())
{
RadTreeNode dirNode = new RadTreeNode(directoryInfo.Name);
parentNode.Nodes.Add(dirNode);
LoadDirectoriesAndFiles(directoryInfo, dirNode);
}
}
//SortNodes is a recursive method enumerating and sorting all node levels
private void SortNodes(RadTreeNodeCollection collection)
{
Sort(collection);
foreach (RadTreeNode node in collection)
{
if (node.Nodes.Count > 0)
{
SortNodes(node.Nodes);
}
}
}
/// The Sort method is called for each node level sorting the child nodes
public void Sort(RadTreeNodeCollection collection)
{
RadTreeNode[] nodes = new RadTreeNode[collection.Count];
collection.CopyTo(nodes, 0);
Array.Sort(nodes, new TreeNodeComparer());
collection.Clear();
collection.AddRange(nodes);
}
// The TreeNodeComparer class defines the sorting criteria
class TreeNodeComparer : IComparer
{
public int Compare(object x, object y)
{
RadTreeNode firstNode = (RadTreeNode)x;
RadTreeNode secondNode = (RadTreeNode)y;
return firstNode.Text.CompareTo(secondNode.Text);
}
}
}
step 2
public partial class DirectoryTree : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["Path"])))
{
this.RadTreeView1.Nodes.Clear();
DirectoryInfo dir = new DirectoryInfo(Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["Path"]));
RadTreeNode node = new RadTreeNode(dir.Name);
LoadDirectoriesAndFiles(dir, node);
this.RadTreeView1.Nodes.Add(node);
SortNodes(RadTreeView1.Nodes);
}
}
// Load Directory and file from path
private void LoadDirectoriesAndFiles(DirectoryInfo dir, RadTreeNode parentNode)
{
foreach (FileInfo fileInfo in dir.GetFiles())
{
RadTreeNode fileNode = new RadTreeNode(fileInfo.Name);
parentNode.Nodes.Add(fileNode);
}
foreach (DirectoryInfo directoryInfo in dir.GetDirectories())
{
RadTreeNode dirNode = new RadTreeNode(directoryInfo.Name);
parentNode.Nodes.Add(dirNode);
LoadDirectoriesAndFiles(directoryInfo, dirNode);
}
}
//SortNodes is a recursive method enumerating and sorting all node levels
private void SortNodes(RadTreeNodeCollection collection)
{
Sort(collection);
foreach (RadTreeNode node in collection)
{
if (node.Nodes.Count > 0)
{
SortNodes(node.Nodes);
}
}
}
/// The Sort method is called for each node level sorting the child nodes
public void Sort(RadTreeNodeCollection collection)
{
RadTreeNode[] nodes = new RadTreeNode[collection.Count];
collection.CopyTo(nodes, 0);
Array.Sort(nodes, new TreeNodeComparer());
collection.Clear();
collection.AddRange(nodes);
}
// The TreeNodeComparer class defines the sorting criteria
class TreeNodeComparer : IComparer
{
public int Compare(object x, object y)
{
RadTreeNode firstNode = (RadTreeNode)x;
RadTreeNode secondNode = (RadTreeNode)y;
return firstNode.Text.CompareTo(secondNode.Text);
}
}
}
No comments:
Post a Comment