TreeView控件二(递归算法)

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

 

 

ContractedBlock.gifExpandedBlockStart.gifCode
 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(07+ "";
            }
            
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机中桌面中不显示U盘图标,电脑不显示u盘怎么回事 电脑不显示u盘的解决办法...

在平时的工作中&#xff0c;我们会经常使用到U盘来拷贝资料&#xff0c;U盘便于携带并且储存量大&#xff0c;所以很受大家的欢迎。但是平时我们在拷贝资料将U盘插入电脑中&#xff0c;会发现U盘在电脑中不显示&#xff0c;即使在桌面上仔细寻找也无济于事。这种情况小编也有遇…

spring-在配置文件中配置DAO时直接引用DataSource

一、创建spring项目 项目名称&#xff1a;spring101306二、在项目上添加jar包 1.在项目中创建lib目录 /lib 2.在lib目录下添加spring支持 commons-logging.jar junit-4.10.jar log4j.jar mysql-connector-java-5.1.18-bin.jar …

计算机基础知识总结及自学,计算机基础知识的简单总结

我说明一下&#xff0c;本文只是基于作者的个人理解所作出的总结&#xff0c;如果有什么不对的地方&#xff0c;希望大家给我指正&#xff0c;我会尽快更正的。我也想通过51cto这个大平台&#xff0c;能够与大家一同学习&#xff0c;一同交流&#xff0c;一同进步。1.计算机的组…

实验1.1

转载于:https://www.cnblogs.com/P201821430028/p/10689308.html

札记__ADT:URL,Lua:strlen方法

2019独角兽企业重金招聘Python工程师标准>>> 01&#xff0c;Android ADT 在线更新的URL&#xff1a; https://dl-ssl.google.com/android/eclipse/ 02&#xff0c;Lua中字符串长度的判断可以使用 # local str "abcabc" print(#str) --6 print(#"a…

vue中的适配:px2rem

这应该是vue项目在适配移动端时候&#xff0c;最简单的方法之一下面是基本步骤&#xff08;使用cnpm&#xff09;1.下载并引入lib-flexible cnpm install --save lib-flexible 在main.js中 &#xff1a;import ‘lib-flexible/flexible’2.引入px2rem-loader cnpm install --sa…

Java高级篇 -- List选择及优化

为什么80%的码农都做不了架构师&#xff1f;>>> 在java编程中&#xff0c;我们常常使用到java自带的集合类List 以下为几点简单的优化建议&#xff1a; 1.Vector还是ArrayList Vector有其特有有点&#xff0c;其每个方法都为同步方法【synchronized】&#xff0c…

每一件事情的开始总是很困难的!

每一件事情的开始总是很困难的&#xff01;我今天花了一下午的时间终于把开头做完了&#xff0c;希望底下的事情&#xff0c;顺顺当当的&#xff01;转载于:https://blog.51cto.com/7305256/1564904

html双翼布局,第19题 CSS如何实现双飞翼布局?

双飞翼布局如下图所示&#xff1a;有了圣杯布局的铺垫&#xff0c;双飞翼布局也就问题不大啦。这里采用经典的float布局来完成。HTML代码&#xff1a;双飞翼布局码云笔记mybj123.comCSS代码&#xff1a;*{margin: 0;padding: 0;}.container {min-width: 600px;}.left {float: l…

【原】关于AdaBoost的一些再思考

一、Decision Stumps&#xff1a; Decision Stumps称为单层分类器&#xff0c;主要用作Ensemble Method的组件&#xff08;弱分类器&#xff09;。一般只进行一次判定&#xff0c;可以包含两个或者多个叶结点。对于离散数据&#xff0c;可以选取该属性的任意一个数据作为判定的…

计算机系统时间无法更改,电脑时间不能修改|系统时间改不了 四个处理办法

电脑时间不能修改|系统时间改不了 四个处理办法&#xff1f;电脑时间不但可以让网友准确的查看时间&#xff0c;还对软件的运行、工作等方面至关重要&#xff0c;有时大家看电脑时间不准确想要修改&#xff0c;确发现改不了系统时间。碰到该故障的朋友不要惊慌&#xff0c;下面…

斐波那契数列(fabnacci)java实现

斐波那契数列定义&#xff1a;From Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/Fibonacci_number In mathematics, the Fibonacci numbers or Fibonacci sequence are the numbers in the following integer sequence:[2][3] or (often, in modern usage)…

计算机二级offic考试题库2017,2017年9月计算机二级MSOffice考试题「带答案」

2017年9月计算机二级MSOffice考试题「带答案」一、单选题1). 存储一个3232点的汉字字形码需用的字节数是( )。A.256B.128C.72D.16正确答案&#xff1a;B2). 无符号二进制整数101001转换成十进制整数等于( )。A.41B.43C.45D.39正确答案&#xff1a;A3). 一个教师讲授多门课程&am…

LiveQing直播点播存储流媒体服务-服务器并发性能及消耗带宽计算参考

LiveQing云端直播点播流媒体软件&#xff1a; 提供设备接入&#xff1b; RTMP推流服务、RTMP分发、HLS分发、HTTP-FLV分发&#xff1b; 云端录像、云端录像检索、云端录像点播、云端录像下载&#xff1b; RTMP转推、推流鉴权验证、推流信息统计、播放信息统计&#xff1b; 直播…

思考设计模式在自助终端软件上的应用 ——Observer(观察着)模式

主要思想&#xff1a;将各硬件模块作为观察者加入观察者队列&#xff0c;当机器状态改变时Notify所有观察者&#xff0c;各观察者根据消息类型做不同反应或不作反应。 下面贴出代码简单实现&#xff0c;希望引起圈内朋友的关注,起到抛砖引玉的效果。 下面两个类是两个基类.…

Visual studio 打包

Visual studio 打包2009-08-07 11:171.打开要打包的“.lsn”文件&#xff0c;在“解决方案资源管理器”中随便打开一个窗口 2.菜单栏“文件”--->“添加”--->“新建项目” 3. 点击“项目类型”--->“其他项目类型”--->“安装和部署”&#xff0c;再在“模板”点击…

MySQL 性能优化的最佳20多条经验分享

当我们去设计数据库表结构&#xff0c;对操作数据库时&#xff08;尤其是查表时的SQL语句&#xff09;&#xff0c;我们都需要注意数据操作的性能。这里&#xff0c;我们不会讲过多的SQL语句的优化&#xff0c;而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧…

RabbitMQ(2) 一般介绍

RabbitMQ 即一个消息队列&#xff0c;主要是用来实现应用程序的异步和解耦&#xff0c;同时也能起到消息缓冲&#xff0c;消息分发的作用。 消息中间件在互联网公司的使用中越来越多&#xff0c;刚才还看到新闻阿里将RocketMQ捐献给了apache&#xff0c;当然了今天的主角还是讲…

python--Websocket实现, 加密 sha1,base64

需要用到gevent-websocket包,这里我们用下图这个 一.websocket简单实现 ep1.py from geventwebsocket.handler import WebSocketHandler from gevent.pywsgi import WSGIServer from geventwebsocket.websocket import WebSocket # 引这个模块为了注释中显示提示用from flask i…

[工具] 解决sublime text运行javascript console无输出问题

1、使用nodeJS在sublime text 运行javascript 下载安装nodeJS在sublime text新建build system&#xff1a;tools->build system->new build system…&#xff0c;输入代码&#xff1a;{ "cmd": ["node", "$file"], "selector"…