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

关键字: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);
    }
}
 
其中的是读取数据用的,用的是数据集进行的操作.关于数据集的定义请下载本文附带的源码,很简单的,同样,通过数据集的方式来访问数据也很方便.
 
比较复杂的情况,需要用到递归,比如读取文件目录信息.可以参考我的 这篇文章.
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值