扩展了一下。每个控件都有其独特的写法和用法,treeview就是这样的一个控件。做个类似资源管理器的页面。如果逐层遍历,代码会不断重复,所以这时需要用递归算法

Code
 public static void TreeBindMethod(TreeView tvFile,string target)
        {
            tvFile.Nodes.Clear();
            TreeNode rootNode = new TreeNode("文件管理", "0", "~/Images/file/folder.gif","FileMain.aspx?id=0","");
            tvFile.Nodes.Add(rootNode);
            IList<FileInfo> list = FileInfoService.GetAllEntities().Where(c=>c.IsDelete==false).ToList();
            var query = list.Where(c => c.ParentId == 0).Select(c => c).ToList();
            foreach (FileInfo file in query)
            {
                TreeNode node = GetFileTree(out target, file);
                AddChildTree(list, file, target, node);
                AddTreeMethod(rootNode, node);
            }
        }

private static string filename;
        private static TreeNode GetFileTree(out string target, FileInfo file)
        {

TreeNode node = new TreeNode();
            if (file.FileName.Length > 8)
            {
                filename = file.FileName.Substring(0, 7) + "";
            }
            else {
                filename = file.FileName;
            }
            node.Text = filename;
            node.Value = file.Id.ToString();
            node.ImageUrl = file.FileType.FileTypeImage;
            node.NavigateUrl = string.Format("FileMain.aspx?Id={0}",file.Id);
            target = file.FilePath;
            return node;
        }

private static void AddChildTree(IList<FileInfo> list, FileInfo file,string target, TreeNode fatherNode)
        {
            int id = file.Id;
            var childquery = list.Where(c => c.ParentId == id).ToList();
            foreach (FileInfo childfile in childquery)
            {
                TreeNode childnode = new TreeNode();
                childnode.Text = childfile.FileName;
                childnode.ImageUrl = childfile.FileType.FileTypeImage;
                childnode.NavigateUrl = string.Format("FileMain.aspx?Id={0}", childfile.Id);
                target = childfile.FilePath;
//这里调用了自己,就是递归算法,遍历了树所有节点
                AddChildTree(list, childfile, target, childnode);
                AddTreeMethod(fatherNode, childnode);
            }
        }

private static void AddTreeMethod(TreeNode fatherNode, TreeNode childnode)
        {
            fatherNode.ChildNodes.Add(childnode);
        }
//当然,可以设置一个int depth=0;的参数,在递归算法前,if(depth++>4 yield break;来设置递归深度

转载于:https://www.cnblogs.com/drek_blog/archive/2009/07/12/1522143.html

TreeView控件二(递归算法)相关推荐

  1. C# 系统应用之ListView控件 (二).加载选中节点文件夹下文件信息

    在项目中的前面一篇文章"C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标"中我讲述了如何使用TreeView控件树状实现显示"我的电脑&quo ...

  2. C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标

    在C#系统应用毕设U盘防御软件中需要实现文件不可恢复的删除,首先需要实现类似于资源管理器的界面,通过TreeView控件显示"我的电脑"所有磁盘文件树状目录并加载相应图标.显示结果 ...

  3. TreeView控件应用--访问文件或文件夹(一)

    C#用TreeView访问文件或文件夹,通过递归,展开所有文件夹(类似资源管理器的树形窗体) 首先,算法是用递归算法,不断的递归文件.以此来遍历整个电脑的磁盘内容,过程也很简单.这种算法的时间复杂度太 ...

  4. kendo treeview 修改节点显示值_VBA学习笔记60-1: Treeview控件

    学习资源:<Excel VBA从入门到进阶>第60集 by兰色幻想 本节讲Treeview控件. TreeView控件是以树形结构显示数据的控件.利用TreeView控件,可以设计出树形结 ...

  5. 树TreeView控件与DataTable交互添加节点(最高效的方法)

    方法一: View Code 本文转载:http://dengzebo.blog.163.com/blog/static/18867406201032141742168/ #region " ...

  6. TreeView 控件帮助文件

    理解层级概念,层级理论上可以有无限级,一般用到四,五级也够用了.最上级的只能有一个,我们把它叫做"爷",接下来是"父",再是"子",再是&q ...

  7. TreeView控件介绍

    TreeView控件是一个树控件,通过节点添加来实现目录树的形式,如图: //建立父节点TreeNode tn1 = treeView1.Nodes.Add("管理部门");Tre ...

  8. VB Treeview控件 介绍与使用

    一.概述 TreeView控件显示Node对象的分层列表,每个Node对象均由一个标签和一个可选的位图组成.TreeView 一般用于显示文档标题.索引入口.磁盘上的文件和目录.或能被有效地分层显示的 ...

  9. 自学Web开发第十四天-基于VB和ASP.NET;丰富数据呈现:TreeView控件的使用及与GridView控件联动,深入研究从GridView中取数据

    自学Web开发第十四天-基于VB和ASP.NET:丰富数据呈现:TreeView控件的使用及与GridView控件联动,深入研究从GridView中取数据 GridView操作数据库后,刷新TreeV ...

最新文章

  1. xshell如何登陆堡垒机_Xshell连接有跳板机(堡垒机)的服务器
  2. 微信和支付宝中的一些常用方法封装
  3. 机器视觉:Asymmetry Problem in Computer Vision
  4. [Medical Image Process] 3.4 Morphology Application—Watershed Algorithm 分水岭算法
  5. 5,6,7_InfluxDB数据保留策略,InfluxDB的关键概念,带有时区进行查询示例
  6. Linux上java进程的查看和终止
  7. HTTP Cookie
  8. Windows 8操作技巧之快捷键大全
  9. “我没搞懂元宇宙,但一天能赚9w块”
  10. 神秘操作系统Ocean惊艳曝光引众说纷纭 UI同质化局面或被打破
  11. echarts地图地名显示_echarts地图 省份名称自定义位置和居中解决办法
  12. spring框架mvc框架_5篇Spring框架书籍,通过MVC学习Spring
  13. 【龙印】龙芯1c上双路16位AD芯片TM7705的linux驱动
  14. Astah professional 7.2
  15. 关于修改双系统默认启动项设置
  16. fullCalendar获取某一天的日程(event)
  17. excel换行按什么键_电脑截图按什么键
  18. ubuntu的gnome桌面重启
  19. 我和王争学设计模式|抽象工厂
  20. 五面拿下阿里飞猪offer,java开发程序员

热门文章

  1. 什么叫白户,白户能贷款吗?
  2. python括号的区别_Python中类-带括号与不带括号的区别
  3. JZOJ 4421. aplusb
  4. phpmyadmin登录远程mysql数据库
  5. IEnumerableT和IQueryableT区分
  6. 对于数据库表排他更新的理解
  7. [ CodeVS冲杯之路 ] P3116
  8. 20145122《Java面向对象程序设计》实验二实验报告
  9. CentOS 6.5安装VNC server
  10. 记录下面试中的回答的不好的问题