组织和遍历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);
    }
}
 
其中的是读取数据用的,用的是数据集进行的操作.关于数据集的定义请下载本文附带的源码,很简单的,同样,通过数据集的方式来访问数据也很方便.
 
比较复杂的情况,需要用到递归,比如读取文件目录信息.可以参考我的文章.
 
 

如何让VC只输出汇编代码?

如何让VC只输出汇编代码?让VC只输出汇编代码十分简单,只要加入下面这个参数就可以了。cl /FA test.cpp这样生成出来的就是汇编代码。如何使ESC键对于对话框无效?完成要求的功能可以有两种方...
  • wxyxl
  • wxyxl
  • 2001-05-04 14:06:00
  • 827

小谈gluPerspective

写这一篇之前推荐大家看看这篇,看完之后你就可以忽略我这篇文章了 :http://www.cnblogs.com/chengmin/archive/2011/09/12/2174004.html   ...
  • trustguan
  • trustguan
  • 2015-03-01 09:49:41
  • 734

Python快速教程 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 怎么能快速地掌握Python?这是和朋友闲聊时谈起

Python快速教程 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!   怎么能快速地掌握Python?这是...
  • suifenzhuiyue
  • suifenzhuiyue
  • 2015-07-07 20:28:16
  • 265

大话设计模式系列

网上一位叫慈龙的朋友帮我把之前的《小菜编程成长记》整理成了PDF文档,非常感谢他的工作。尽管此系列还没有写完,此前的文章也有不少瑕疵,不过如果此PDF可以让更多的朋友喜欢上面向对象设计、喜欢上设计模式...
  • GarfieldEr007
  • GarfieldEr007
  • 2015-07-16 13:49:52
  • 510

AJAX初学者详解

原文出处:http://www.cnblogs.com/mingmingruyuedlut/archive/2011/10/18/2216553.html   ERIC SUN 1、ajax技术的背...
  • li160620
  • li160620
  • 2016-10-17 14:16:01
  • 178

带checkbox节点树

 package day5_090306;import java.awt.BorderLayout;import java.awt.Component;import java.awt.Dimensio...
  • lxase
  • lxase
  • 2009-03-25 10:20:00
  • 1066

TreeView的图片问题

TreeView的图片,是放在.axd的资源文件中的,如果服务器上将.axd的映射删除掉了,就无法显示图片 可执行文件:C:/WINDOWS/Microsoft.NET/Framework/v2.0....
  • as_314159265
  • as_314159265
  • 2011-03-20 11:03:00
  • 449

C-结构体之位域(位段)

 http://www.cnblogs.com/bigrabbit/archive/2012/09/20/2695543.html
  • Tiancaizhaohaiwei
  • Tiancaizhaohaiwei
  • 2016-06-01 10:22:37
  • 348

(转)浅谈CSRF攻击方式

原文链接:http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html 一.CSRF是什么?   CSRF(Cross-site...
  • u014538198
  • u014538198
  • 2014-11-29 16:57:23
  • 248

Quartz.NET学习系列(三)--- Cron触发器

Cron触发器是使用Cron表达式来配置任务的时间的。 Cron表达式介绍         Cron表达式总共有7个值,其中一个可选,具体如下(摘自官方文档): 值 是否必须 允许...
  • Eye_cng
  • Eye_cng
  • 2015-03-14 19:06:34
  • 1305
收藏助手
不良信息举报
您举报文章:组织和遍历TreeView里面的数据 http://www.cnblogs.com/aspnetx/archive/2007/09/18/897083.html
举报原因:
原因补充:

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