组织和遍历TreeView里面的数据 http://www.cnblogs.com/aspnetx/archive/2007/09/18/897083.html

转载 2007年10月08日 10:44:00
关键字:asp.net2.0,treeview,数据,遍历
 

经常有朋友问如何把数据添加进TreeView,其实更多的是要问为什么treeview不能绑定数据库里面的数据,而只能绑定xml的数据.
这个问题要从数据的结构来阐述,TreeView的数据结构是树状的,而表里的数据是平面的,平面的数据结构表达树状的结构就有很多种方法,所以笔者认为这也就是为什么微软没有提供直接的数据表绑定方法而是把这个空间留给了用户.
下面简单描述如何把简单的数据库里的数据遍历到TreeView中.
首先假定有如下的数据表,结构有:id主键,nodetext节点文本,fathernode父节点id.其中fathernode这个字段默认值是0,代表是根节点,如果是非0的话那么就说明是主键为这个值的子节点,结构就是这么简单,当然在数据表中实现树形结构的存储还有很多,这里只讨论如上的情况.
数据表定义如下图:
 


为了测试往里面写几条数据:
 

这里为了简便,假定树只有两层.在这种情况下用两个for 循环就可以实现了,当然也可以用递归,不过为了简单说明问题,这里只用循环的方式来做.
外层循环读取所有FatherNode为0的节点,里面套用的循环是读取当前节点的子节点.代码大致如下:
 
private void GenerateTreeView()
{
    DataSet1TableAdapters.test_tableTableAdapter ta1 = new DataSet1TableAdapters.test_tableTableAdapter();
    DataTable dt1 = ta1.GetDataByFatherNode(0);
 
    for (int i = 0; i < dt1.Rows.Count; i++)
    {
        TreeNode tn1 = new TreeNode();
        tn1.Text = dt1.Rows[i]["NodeText"].ToString();
 
        DataSet1TableAdapters.test_tableTableAdapter ta2 = new DataSet1TableAdapters.test_tableTableAdapter();
        int currentid=int.Parse(dt1.Rows[i]["id"].ToString());
        DataTable dt2 = ta2.GetDataByFatherNode(currentid);
 
        for (int j = 0; j < dt2.Rows.Count; j++)
        {
            TreeNode tn2 = new TreeNode();
            tn2.Text = dt2.Rows[j]["NodeText"].ToString();
 
            tn1.ChildNodes.Add(tn2);
        }
 
       TreeView1.Nodes.Add(tn1);
    }
}
 
其中的是读取数据用的,用的是数据集进行的操作.关于数据集的定义请下载本文附带的源码,很简单的,同样,通过数据集的方式来访问数据也很方便.
 
比较复杂的情况,需要用到递归,比如读取文件目录信息.可以参考我的文章.
 
 

一个简单的性能计数器:CodeTimer

转载自老赵的博客:http://blog.zhaojie.me 原文链接:http://blog.zhaojie.me/2009/03/codetimer.html 有数据,有真相,相...
  • awp0011
  • awp0011
  • 2015年10月17日 08:43
  • 466

网络攻击技术(三)——Denial Of Service

DOS攻击。。貌似很厉害。虽然不是很懂,但是要记录下来。不忘研究
  • qq_19674905
  • qq_19674905
  • 2016年12月08日 22:42
  • 128

java日志文件log4j.properties配置详解

log4j.properties配置
  • u012485012
  • u012485012
  • 2017年03月17日 01:27
  • 200

递归的遍历TreeView中的所有结点

有时候需要访问TreeView中的所有结点,在所有结点中查找相关信息。 下面给出递归的遍历所有结点的代码,以及TreeView的构建代码 using System; using S...
  • weixingstudio
  • weixingstudio
  • 2013年03月11日 19:26
  • 2541

Aurora:一个让你在word、PowerPoint、excel、visio等软件中使用LaTex的软件

Aurora Aurora lets you use LaTeX in Microsoft® Word, PowerPoint®, Visio®, Excel®, and many other p...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年05月20日 13:54
  • 1310

Socket通信中的多进程编程实例

1  需求描述: (1)Linux下编写。 (2)创建一个服务器、若干个客户端。 (3)用户可以通过客户端输入文字向服务器发送消息。 (4)服务器端接收到客户端发送的数据,将用...
  • qq2007xia
  • qq2007xia
  • 2014年08月26日 22:40
  • 451

MODIS卫星介绍

MODIS卫星介绍 一、MODIS传感器简介       MODIS是搭载在TERRA和AQUA卫星上的一个重要的传感器,是卫星上唯一将实时观测数据通过x波段向全世界直接广播,并可以免费接...
  • zhangting1002
  • zhangting1002
  • 2017年12月26日 13:17
  • 63

C# TreeView 建立、遍历树(递归)

C#gui程序中建立树状结构、遍历树状结构、树状结构节点选中联动(选中父节点时,自动选中其全部子节点,取消选中的某子节点,取消其相应的所有父节点的选中),读取选中节点信息。...
  • heivy
  • heivy
  • 2016年12月07日 15:59
  • 4062

集合之 Collection-List->ArrayList三种遍历方式 常用方法

/* * 1.存储对象①数组(一旦创建长度不可变)②集合 * 2.集合可以动态长度存储 * Collection接口: * |—-List接口:存储有序的,可以重...
  • lxf512666
  • lxf512666
  • 2016年10月08日 00:43
  • 862

WPF中的TreeView如何定义模版,并绑定数据

转自:http://www.cnblogs.com/izualx/archive/2011/02/03/1949055.html   最近在用WPF做开发,项目进展的还算顺利,WPF总体来...
  • AAA123524457
  • AAA123524457
  • 2015年06月25日 14:12
  • 2937
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:组织和遍历TreeView里面的数据 http://www.cnblogs.com/aspnetx/archive/2007/09/18/897083.html
举报原因:
原因补充:

(最多只允许输入30个字)