[原创]treeview简单根据数据库的数据,显示多级节点
如图:
要建立多少个数据表???其实一个数据库,一张表就足够,自我调用的形式:
--创建个数据库
create database live
use live
--创建个表
create table live
(
cid int identity(1,1) primary key not null,
class char(20) not null,
pcid int not null
)
select * from live
--插入根节点的标题
insert into live values('吃',0)
insert into live values('穿',0)
insert into live values('住',0)
insert into live values('行',0)
--插入子节点的标题
insert into live values('西餐',1)
insert into live values('中餐',1)
insert into live values('嘻哈系列',2)
insert into live values('正装系列',2)
insert into live values('牛仔系列',2)
insert into live values('瓦片房',3)
insert into live values('茅草房',3)
insert into live values('白坯房',3)
insert into live values('精装小屋',3)
insert into live values('两个轮子的',4)
insert into live values('四个轮子的',4)
--插入子结点的子节点的标题
insert into live values('奔驰',15)
insert into live values('奥迪',15)
insert into live values('尼桑',15)
insert into live values('别克',15)
--------------------
以上的是创建数据库,并插入数据,具体实现代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace treeviewANDdatabase
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//连接数据库
SqlConnection conn = new SqlConnection("server=admin;uid=sa;pwd=sa;database=live");
conn.Open();
//数据的筛选
string str = "select * from live";
//DataAdapter,它起着桥梁的作用,在 DataSet 和其源数据存储区之间进行数据检索和保存
SqlDataAdapter da = new SqlDataAdapter(str, conn);
//填充 dataset 具有类似数据库的结构,如表、列、关系和约束!
DataSet ds = new DataSet();
da.Fill(ds);
//调用方法
nodes(this.treeView1.Nodes, ds, 0);
}
//方法
private void nodes(TreeNodeCollection tnode,DataSet ds, int id)
{
//创建视图 ,应为只有一张表
DataView dview = new DataView(ds.Tables[0]);
//视图的好处,在于能方便筛选数据
dview.RowFilter = "[pcid]=" + id+ "";
//显示每个节点的标题,递归!
foreach (DataRowView row in dview)
{
TreeNode node = new TreeNode();
node.Text = row["class"].ToString();
tnode.Add(node);
nodes(node.Nodes, ds,Int32.Parse( row["cid"].ToString()));
}
}
}
}
---------------------------------------------
OK,就这么简单。。。当然,treeview的应用远远没那么简单!