Winfrom treeview 如何从多个数据表中获取数据动态生成
本文转载:http://www.cnblogs.com/VincentLuo/archive/2008/03/29/1128987.html
在 汪洋怡舟的这篇文章中【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
Winfrom treeview 如何从多个数据表中获取数据动态生成的更多相关文章
- DataTable to Excel(使用NPOI、EPPlus将数据表中的数据读取到excel格式内存中)
/// <summary> /// DataTable to Excel(将数据表中的数据读取到excel格式内存中) /// </summary> /// <param ...
- 将数据表中的数据添加到ComboBox控件中
实现效果: 知识运用: ComboBox控件的DataSource 属性 //获取或设置ComboBox的数据源 public Object DataResouce{get;set;} //属性值:任 ...
- 向mysql数据表中插入数据失败的原因
1.案例代码: $sql1="insert into content(category,subject,content,username,release_date) values('{$ca ...
- code first网站发布后数据表中没有数据问题
code first网站发布后数据表中没有数据问题 (1).将internal sealed class Configuration类访问修饰符改为public class Configuratio ...
- python连接mysql数据表查询表获取数据导入到txt中
import pymysql'''连接mysql数据表查询表获取数据导入到txt中'''#查询结果写入数据到txtdef get_loan_number(file_txt): connect = py ...
- SQL语句的使用,SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据
SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法. 但是 SQL 语言也包含用于更新. ...
- 触发器修改后保存之前的数据 表中插入数据时ID自动增长
create or replace trigger t before update on test5 for each rowbegin insert into test55 values (:old ...
- MySQL删除数据表中重复数据
今天遇到一个问题,数据表的数据有重复的,关键原因在于新增数据时,没有根据条件先判断数据是否存在,当数据存在时进行有关条件的更新,不存在时做新增数据. 对于表中已经存在的数据处理办法的方法: 1.先根据 ...
- 查询和删除数据表中反复数据的sql
1.查询表中反复数据. select * from people where peopleId in (select peopleId from people group by ...
随机推荐
- Git教程(3)命令行使用git简单示例
基础 Git系统下的的文件有3种状态: 已修改(modified):已修改表示修改了文件,但还没保存到数据库中. 已暂存(staged) : 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下 ...
- Android开发之极光推送基本步骤
[转]:http://wyong.blog.51cto.com/1115465/1402842 两天在研究推送的问题,后来确定了用极光推送,本人将整个过程整理一下: 1.到极光官网注册账号:https ...
- 基于注解的SpringMVC整合JPA
转载位置:http://www.blogjava.net/sxyx2008/archive/2010/11/02/336768.html 实体类 Department package com.sj.b ...
- bzoj1098 1301
这两题很类似,都是在补图上搜索 但是由于补图太大我们不能建出来 考虑先从一个点搜,每次搜可以搜的点, 然后维护一个链表,记录当前还没有搜过的点,搜过之后从链表中删除即可 type node=recor ...
- [原]Unity3D深入浅出 - 认识开发环境中的RenderSettings面板
点击菜单栏的Edit项里的RenderSettings即可打开该面板. Fog:在Scene中开启雾效果 Fog Color:雾的颜色 Fog Mode:雾效果的模式,Linear(线性雾效果) Ex ...
- [POJ 3420] Quad Tiling
Quad Tiling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3495 Accepted: 1539 Des ...
- 【转】Android中removeCallbacks失效原因
原文网址:http://blog.sina.com.cn/s/blog_6714fba70100wtx1.html 在Android开发中会使用Handle的removeCallbacks函数,该函数 ...
- (转载)【C++】new A和new A()的区别详解
(转载)http://blog.csdn.net/xiajun07061225/article/details/8796257 我们在C++程序中经常看到两种new的使用方式:new A以及new A ...
- 咨询内容: TF卡一定要重新买吗,为什么我的放进去读不了呢
京东回复:您好!先科(SAST) SA-992 便携数码音响 (兰色)不用重新买,但是需要您采用FAT分区重新格式化,感谢您对京东的支持!祝您购物愉快!
- 430的启动,I/O中断
感言:看了这一集MSP430的讲解之后,我才知道msp430真的和arm7没什么区别了,可能在某些功能上要比arm7要优秀 1:430的系统复位和初始化初始化 430的系统复位有两个来源 1:POR上 ...