ASP.NET通过递归添加树(Treeview)
先来看看效果,基本上就是这样的。
所谓树,无非就是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)相关推荐
- 树TreeView控件与DataTable交互添加节点(最高效的方法)
方法一: View Code 本文转载:http://dengzebo.blog.163.com/blog/static/18867406201032141742168/ #region " ...
- C# 递归的应用 TreeView递归绑定数据
递归在WinForm中的应用 最近做项目经常用到递归,刚开始很久没用,不太熟悉,现在研究了下,并写下了学习笔记及开发经验总结. 递归热身 一个算法调用自己来完成它的部分工作,在解决某些问题时,一个算法 ...
- 第11章 递归分形树(《Python趣味创意编程》教学视频)
(图书介绍:童晶:<Python趣味创意编程>新书预告) 本章我们将绘制递归分形树,如图所示.首先学习递归的概念,并学习if-elif-else语句:接着学习分形的概念,并利用递归调用绘制 ...
- 递归展示树状图/树状表格
递归展示树状图 一.数据库表设计 二.后端java递归代码 三.前端展示树状表格 四.效果展示 一.数据库表设计 这里我们采用自关联的设计,通过id和pid的对应来确认数据的上下级关系 建表语句,我这 ...
- 递归实现树状分级部门树《部门单表》
展示: 为了更好的展示数据实现过程:该功能采用mybatis写xml的方式实现,同样的mybatis-plus也能实现该功能,实现树状主要是通过递归这个方法把数据封装到集合里面返回给前端: 1.数据库 ...
- [原创]ASP.NET环境下完整的treeview使用类
#region 声明 //---------------------------------------------------------------------- // // 作者: 李淼(Nic ...
- [Asp.net MVC]Asp.net MVC5系列——添加数据
目录 概述 显示添加数据时所用表单 处理HTTP-POST 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列--第一个项目 [Asp.net MVC]Asp.net MVC5系列 ...
- php递归实现层级树状展开,PHP递归实现层级树状展开,php递归层级树状_PHP教程...
PHP递归实现层级树状展开,php递归层级树状 本文实例为大家分享了PHP递归实现层级树状展开的主要代码,供大家参考,具体内容如下 效果图: 实现代码: $arr['id'], 'fid' => ...
- 菜单转换Java_java递归菜单树转换成pojo对象
package com.cjonline.foundation.authority.pojo; import java.util.ArrayList; import java.util.Collect ...
最新文章
- apache代理模块proxy使用
- TIOBE Programming Community Index
- 新人与三年经验的交互设计师有多大的差距?
- 26_多线程_第26天(Thread、线程创建、线程池)_讲义
- CSS 中 的 margin、border、padding 区别 (内边距、外边距)
- 面向对象三个特征总结
- 获取pheatmap热图聚类后和标准化后的结果
- Computer science 概念汇总
- dubbo 学习笔记 -- provider端
- BZOJ3157/BZOJ3516 国王奇遇记(矩阵快速幂/数学)
- matlab 扩大虚拟内存,matlab 扩大虚拟内存
- IBM中低端存储解决方案
- 基于OpenCv的人脸识别(Python完整代码)
- mariadb中文手册_mariadb中文手册
- 校OJ P1220 -- zyf的现状
- [ROS Navigation Tuning Guide]翻译
- 没有比这个更详细的Elasticsearch教程
- java读取excel表格数据
- 用1元钱买到原价万元的电脑是什么体验?
- (Docker实战)在CentOS7上使用Docker;(超详细、附图、附代码)