zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    }


    表结构.jpg第四个表的实现图.bmpmytest.jpg

    文件下载:https://files.cnblogs.com/VincentLuo/SolutionTreeView.rar

  • 相关阅读:
    AcWing 900. 整数划分
    AcWing 913. 排队打水
    AcWing 897. 最长公共子序列
    AcWing 895. 最长上升子序列
    AcWing 902. 最短编辑距离
    AcWing 338. 计数问题
    AcWing 896. 最长上升子序列 II
    AcWing 779. 最长公共字符串后缀
    AcWing 282. 石子合并
    ASP.NET里常用的JS (转贴)
  • 原文地址:https://www.cnblogs.com/VincentLuo/p/1128987.html
Copyright © 2011-2022 走看看