Tuesday, 12 August 2014

Telerik Tree view with folders

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);
            }
        }
    }

No comments:

Post a Comment