先来看看效果,基本上就是这样的。

所谓树,无非就是2点,第一个:根节点,第二:叶子节点,其中叶子节点中还可能有叶子节点,但是根节点始终只有一个。

下面贴上 各部分的代码

1.PAGE_LOAD载入事件。

    protected void Page_Load(object sender, EventArgs e){BindTree(); //绑定树}

2.BindTree方法。

    private void BindTree(){DataSet  ds = new DataSet(); //这里的DS里不存在数据,具体情况请大家自己具体考虑,修改代码TreeView1.Nodes.Clear(); AddTree("-1", (TreeNode)null,ds);TreeView1.Nodes[0].Expanded = true;}

3.AddTree方法,递归添加树。


/*其中ds对应的是一个实体类Model,里面的IndexName,IndexID等,都是对应着数据库里的相应字段所以我们在使用这个方法时前,必须先得到相对应的有具体意义的DataSet*//// <summary>/// 递归树/// </summary>/// <param name="ParentID">当前节点父节点ID</param>/// <param name="pNode"></param>/// <param name="ds"></param>
private void AddTree(string ParentID, TreeNode pNode,DataSet ds){DataView dvTree = new DataView(ds.Tables[0]); //用DataView来模拟DataTable,因为DV是虚拟的表,所以可以提高效率foreach (DataRowView Row in dvTree){TreeNode node = new TreeNode();if (pNode == null){         //添加根节点   node.Text = Row["IndexName"].ToString();node.Value = Row["IndexID"].ToString(); if (Row["IndexClass"].ToString() == "0"){node.NavigateUrl = "IndexInfo1.aspx?IndexID=" + node.Value;}else{node.NavigateUrl = "IndexInfo2.aspx?IndexID=" + node.Value;}node.Target = "mainFrame";node.Expanded = false;TreeView1.Nodes.Add(node);  //添加根节点AddTree(Row["IndexID"].ToString(), node,ds);         //递归,添加子节点,这段递归是必须的,不然只会添加根节点,而进不到下面的else语句,pNode在TreeView第二次执行以后都是不为空的,所以会一直跳到执行ELSE语句里的内容。   }else{       //添加当前节点的子节点   node.Text = Row["IndexName"].ToString();node.Value = Row["IndexID"].ToString();node.ToolTip = node.Text;   if (Row["IndexClass"].ToString() == "0" || Row["IndexParentID"].ToString() == "-1"){node.NavigateUrl = "IndexInfo1.aspx?IndexID=" + node.Value;}else{node.NavigateUrl = "IndexInfo2.aspx?IndexID=" + node.Value;}node.Target = "Frame1"; //某一个节点指向的一个IFRAME,里面可以是这个节点下的具体内容。//node.NavigateUrl = Request.Url.LocalPath + "?OrgID=" + Row["OrgID"].ToString();node.Expanded = false;pNode.ChildNodes.Add(node); //pNode为父节点,把Node作为子节点添加进去AddTree(Row["IndexID"].ToString(), node,ds);         //递归添加子节点 }}}

  

 

ASP.NET通过递归添加树(Treeview)相关推荐

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

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

  2. C# 递归的应用 TreeView递归绑定数据

    递归在WinForm中的应用 最近做项目经常用到递归,刚开始很久没用,不太熟悉,现在研究了下,并写下了学习笔记及开发经验总结. 递归热身 一个算法调用自己来完成它的部分工作,在解决某些问题时,一个算法 ...

  3. 第11章 递归分形树(《Python趣味创意编程》教学视频)

    (图书介绍:童晶:<Python趣味创意编程>新书预告) 本章我们将绘制递归分形树,如图所示.首先学习递归的概念,并学习if-elif-else语句:接着学习分形的概念,并利用递归调用绘制 ...

  4. 递归展示树状图/树状表格

    递归展示树状图 一.数据库表设计 二.后端java递归代码 三.前端展示树状表格 四.效果展示 一.数据库表设计 这里我们采用自关联的设计,通过id和pid的对应来确认数据的上下级关系 建表语句,我这 ...

  5. 递归实现树状分级部门树《部门单表》

    展示: 为了更好的展示数据实现过程:该功能采用mybatis写xml的方式实现,同样的mybatis-plus也能实现该功能,实现树状主要是通过递归这个方法把数据封装到集合里面返回给前端: 1.数据库 ...

  6. [原创]ASP.NET环境下完整的treeview使用类

    #region 声明 //---------------------------------------------------------------------- // // 作者: 李淼(Nic ...

  7. [Asp.net MVC]Asp.net MVC5系列——添加数据

    目录 概述 显示添加数据时所用表单 处理HTTP-POST 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列--第一个项目 [Asp.net MVC]Asp.net MVC5系列 ...

  8. php递归实现层级树状展开,PHP递归实现层级树状展开,php递归层级树状_PHP教程...

    PHP递归实现层级树状展开,php递归层级树状 本文实例为大家分享了PHP递归实现层级树状展开的主要代码,供大家参考,具体内容如下 效果图: 实现代码: $arr['id'], 'fid' => ...

  9. 菜单转换Java_java递归菜单树转换成pojo对象

    package com.cjonline.foundation.authority.pojo; import java.util.ArrayList; import java.util.Collect ...

最新文章

  1. apache代理模块proxy使用
  2. TIOBE Programming Community Index
  3. 新人与三年经验的交互设计师有多大的差距?
  4. 26_多线程_第26天(Thread、线程创建、线程池)_讲义
  5. CSS 中 的 margin、border、padding 区别 (内边距、外边距)
  6. 面向对象三个特征总结
  7. 获取pheatmap热图聚类后和标准化后的结果
  8. Computer science 概念汇总
  9. dubbo 学习笔记 -- provider端
  10. BZOJ3157/BZOJ3516 国王奇遇记(矩阵快速幂/数学)
  11. matlab 扩大虚拟内存,matlab 扩大虚拟内存
  12. IBM中低端存储解决方案
  13. 基于OpenCv的人脸识别(Python完整代码)
  14. mariadb中文手册_mariadb中文手册
  15. 校OJ P1220 -- zyf的现状
  16. [ROS Navigation Tuning Guide]翻译
  17. 没有比这个更详细的Elasticsearch教程
  18. java读取excel表格数据
  19. 用1元钱买到原价万元的电脑是什么体验?
  20. (Docker实战)在CentOS7上使用Docker;(超详细、附图、附代码)

热门文章

  1. 机器学习--判别式模型与生成式模型
  2. 携手百度 英特尔三大领域布局人工智能市场
  3. 日本面向未来的特定科技领域技术预见分析
  4. 没有精准定位,万物还能实现互联吗?
  5. 人类正在进入超级智能时代,论一种新超级智能的崛起
  6. 腾讯再次海选AI项目,1500进40,医疗零售机器人成新风向
  7. 争自动驾驶领头羊还是确保技术安全?欧美选择不同
  8. LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  9. 风向2018 | AI 突围
  10. 青岛程序员加班看不上球赛崩溃,外卖小哥伸出援手:我帮你改代码