Click here to Skip to main content
15,903,175 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Hi,

How to make asp.net treeview PopulateOnDemand with checkbox. When i click the Asp.net button, treeView.CheckedNodes returns 0.


 protected void Page_Load(object sender, EventArgs e)
        {

            DirectoryInfo directory = new DirectoryInfo(@"D:\Krishna\Examples\Asp.net");
            treeSource.TreeNodePopulate += OnSourceTreeNodePopulate;
            if(Page.IsPostBack)
                return;
            treeSource.ShowCheckBoxes = TreeNodeTypes.All;
             LoadTree(directory,treeSource);
        }

        private void LoadTree(DirectoryInfo directory, TreeView treeView)
        {
            treeView.Nodes.Clear();
          
            TreeNode node = new TreeNode();
            GetFolderNode(node,directory);
            node.NavigateUrl = "javascript:void(0)";
            node.Expanded = true;
            node.Text = directory.Name;
            node.Value = directory.FullName;
            treeView.Nodes.Add(node);
            treeView.ShowLines = true;
            treeView.EnableViewState = true;
            treeView.ExpandDepth = 1;
            
        }

        public static TreeNode GetFolderNode(TreeNode node, DirectoryInfo folder)
        {
            
            TreeNode folderNode = null;
            DirectoryInfo[] folders = folder.GetDirectories();

            DirectoryInfo[] subDirectories = folder.GetDirectories();

            // Scan the directories in the current directory and call this method 
            // again to go one level into the directory tree
            foreach (DirectoryInfo subDirectory in subDirectories)
            {
                folderNode = new TreeNode();
                folderNode.NavigateUrl = string.Empty;
                folderNode.Text = subDirectory.Name;
                folderNode.ShowCheckBox = true;
                folderNode.PopulateOnDemand = true;
                //folderNode.ChildNodes.Add(GetFolderNode(folderNode,subDirectory));
                node.ChildNodes.Add(folderNode);
                
            }
                return node;

            
        }


        private void OnSourceTreeNodePopulate(object sender, TreeNodeEventArgs e)
        {
            if (!Page.IsCallback)
                return;

            DirectoryInfo directory = new DirectoryInfo(e.Node.ValuePath);
            GetFolderNode(e.Node, directory);
        }

        protected void OnCopyClicked(object sender, EventArgs e)
        {
            if(treeSource.CheckedNodes.Count==0)
                return;
       }
}

Dont want to postback for each check, Loading all folders makes page very slower.

Thanks and regards
Krishna
Posted
Updated 5-Nov-13 2:47am
v6

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900