treeview 如何从多个数据表中获取数据动态生成 [提问]

汪洋怡舟的这篇文章中【http://www.cnblogs.com/longren629/archive/2007/03/14/674633.html】只使用了一个数据表,效果如图2

我想使用多个表来生成动态的treeview,效果如图三,代码如下所示

在第二次与第三次的代码中,代码出现重复,中间只是改了表名、列名

多个表之间,是否也可以实现递归呢,不管它的表名与列名是否相同?

    protected DataSet BindDate(string select)
    {
        Database db = DatabaseFactory.CreateDatabase();
        DbCommand cmd = db.GetSqlStringCommand(select);
        DataSet ds = db.ExecuteDataSet(cmd);
        return ds;
    }
    public void BindTree()//第一次
    {
        DataSet ds = BindDate("select * from tree");
        int count = ds.Tables[0].Rows.Count;
        for (int i = 0; i < count; i++)
        {
            TreeNode tn = new TreeNode();
            tn.Text = ds.Tables[0].Rows[i]["Name"].ToString();
            tn.Value = ds.Tables[0].Rows[i]["ID"].ToString();
 BindRoot("select * from Root where ID='" + int.Parse(ds.Tables[0].Rows[i]["ID"].ToString()) + "'", tn);
            trvList.Nodes.Add(tn);
        }
    }
    public void BindRoot(string sql, TreeNode TN)//第二次
    {
        DataSet ds = BindDate(sql);
        int count = ds.Tables[0].Rows.Count;
        for (int i = 0; i < count; i++)
        {
            TreeNode tn = new TreeNode();
            tn.Text = ds.Tables[0].Rows[i]["Name"].ToString();
            tn.Value = ds.Tables[0].Rows[i]["RootID"].ToString();
  BindParent("select * from Parent where RootID='" + int.Parse(ds.Tables[0].Rows[i]["RootID"].ToString()) + "'", tn);
            TN.ChildNodes.Add(tn);
        }
    }
    public void BindParent(string sql, TreeNode TN)//第三次
    {
        DataSet ds = BindDate(sql);
        int count = ds.Tables[0].Rows.Count;
        for (int i = 0; i < count; i++)
        {
            TreeNode tn = new TreeNode();
            tn.Text = ds.Tables[0].Rows[i]["Name"].ToString();
            tn.Value = ds.Tables[0].Rows[i]["RootID"].ToString();
            TN.ChildNodes.Add(tn);
        }
    }
}

文件下载:

http://files.cnblogs.com/VincentLuo/SolutionTreeView.rar

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

.net中使用oracle数据库分页的土办法

近日公司一网站项目,要调用其它系统(call center系统)的oracle数据库数据,只能连接查询,无法创建存储过程,所以只能在sql语句上动脑筋实现分页:...

19560
来自专栏菩提树下的杨过

ModalPopupExtender用法示例

aspx页面 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs...

21480
来自专栏james大数据架构

asp.net中打印指定控件内容

1.写一个PrintHelper类 using System; using System.Data; using System.Configuration; u...

279100
来自专栏智能大石头

SQLite事务与自增深度分析

SQLite什么都好,就怕“database is locked”这些年来想尽办法去规避它。 测试代码: static void Test2() { ...

20670
来自专栏Core Net

C# 处理Word自动生成报告 四、程序处理

55670
来自专栏阿炬.NET

asp.net mvc4 使用KindEditor文本编辑器

35570
来自专栏汪毅雄的专栏

Android 7.0 中 ContentProvider 实现原理

本文描述了 ContentProvider 发布者和调用者这两在 Framework 层是如何实现的。

80020
来自专栏跟着阿笨一起玩NET

在RichTextBox中对关键字进行高亮显示

若要实现更复杂的功能,可以研究一下这个C#的IDE编辑器的代码。http://www.icsharpcode.net/OpenSource/SD/Defaul...

16700
来自专栏.Net移动开发

.Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现扇形图表

22530
来自专栏.Net移动开发

.Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现饼图图表

13720

扫码关注云+社区

领取腾讯云代金券