TreeView控件二(递归算法)
扩展了一下。每个控件都有其独特的写法和用法,treeview就是这样的一个控件。做个类似资源管理器的页面。如果逐层遍历,代码会不断重复,所以这时需要用递归算法
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控件二(递归算法)相关推荐
- C# 系统应用之ListView控件 (二).加载选中节点文件夹下文件信息
在项目中的前面一篇文章"C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标"中我讲述了如何使用TreeView控件树状实现显示"我的电脑&quo ...
- C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标
在C#系统应用毕设U盘防御软件中需要实现文件不可恢复的删除,首先需要实现类似于资源管理器的界面,通过TreeView控件显示"我的电脑"所有磁盘文件树状目录并加载相应图标.显示结果 ...
- TreeView控件应用--访问文件或文件夹(一)
C#用TreeView访问文件或文件夹,通过递归,展开所有文件夹(类似资源管理器的树形窗体) 首先,算法是用递归算法,不断的递归文件.以此来遍历整个电脑的磁盘内容,过程也很简单.这种算法的时间复杂度太 ...
- kendo treeview 修改节点显示值_VBA学习笔记60-1: Treeview控件
学习资源:<Excel VBA从入门到进阶>第60集 by兰色幻想 本节讲Treeview控件. TreeView控件是以树形结构显示数据的控件.利用TreeView控件,可以设计出树形结 ...
- 树TreeView控件与DataTable交互添加节点(最高效的方法)
方法一: View Code 本文转载:http://dengzebo.blog.163.com/blog/static/18867406201032141742168/ #region " ...
- TreeView 控件帮助文件
理解层级概念,层级理论上可以有无限级,一般用到四,五级也够用了.最上级的只能有一个,我们把它叫做"爷",接下来是"父",再是"子",再是&q ...
- TreeView控件介绍
TreeView控件是一个树控件,通过节点添加来实现目录树的形式,如图: //建立父节点TreeNode tn1 = treeView1.Nodes.Add("管理部门");Tre ...
- VB Treeview控件 介绍与使用
一.概述 TreeView控件显示Node对象的分层列表,每个Node对象均由一个标签和一个可选的位图组成.TreeView 一般用于显示文档标题.索引入口.磁盘上的文件和目录.或能被有效地分层显示的 ...
- 自学Web开发第十四天-基于VB和ASP.NET;丰富数据呈现:TreeView控件的使用及与GridView控件联动,深入研究从GridView中取数据
自学Web开发第十四天-基于VB和ASP.NET:丰富数据呈现:TreeView控件的使用及与GridView控件联动,深入研究从GridView中取数据 GridView操作数据库后,刷新TreeV ...
最新文章
- xshell如何登陆堡垒机_Xshell连接有跳板机(堡垒机)的服务器
- 微信和支付宝中的一些常用方法封装
- 机器视觉:Asymmetry Problem in Computer Vision
- [Medical Image Process] 3.4 Morphology Application—Watershed Algorithm 分水岭算法
- 5,6,7_InfluxDB数据保留策略,InfluxDB的关键概念,带有时区进行查询示例
- Linux上java进程的查看和终止
- HTTP Cookie
- Windows 8操作技巧之快捷键大全
- “我没搞懂元宇宙,但一天能赚9w块”
- 神秘操作系统Ocean惊艳曝光引众说纷纭 UI同质化局面或被打破
- echarts地图地名显示_echarts地图 省份名称自定义位置和居中解决办法
- spring框架mvc框架_5篇Spring框架书籍,通过MVC学习Spring
- 【龙印】龙芯1c上双路16位AD芯片TM7705的linux驱动
- Astah professional 7.2
- 关于修改双系统默认启动项设置
- fullCalendar获取某一天的日程(event)
- excel换行按什么键_电脑截图按什么键
- ubuntu的gnome桌面重启
- 我和王争学设计模式|抽象工厂
- 五面拿下阿里飞猪offer,java开发程序员