转发 C#从数据库动态邦定TreeView控件
2008-05-19 18:02
363 查看
[align=left]1:建立数据库[/align]
[align=left] [/align]
[align=left]在SQL SERVER 2000里建立一个表tbTree,表的结构设计如下:[/align]
[align=left]列名 数据类型 描述 长度 主键[/align]
[align=left]ID Int 节点编号 4 是[/align]
[align=left]ParentID Int 父节点编号 4 [/align]
[align=left]ConText Nvarchar 我们要显示的节点内容 50 [/align]
[align=left] [/align]
[align=left]在SQL SERVER 2000中建表的脚本:[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]CREATE TABLE [dbo].[tbTree] ([/align]
[align=left] [ID] [int] NOT NULL ,[/align]
[align=left] [Context] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,[/align]
[align=left] [ParentID] [int] NULL [/align]
[align=left]) ON [PRIMARY][/align]
[align=left] [/align]
[align=left]在表中添加如下记录:[/align]
[align=left] [/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 1,'中国',0)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 2,'北京',11)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 3,'天津',11)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 4,'河北省',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 5,'广东省',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 6,'广州',5)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 7,'四川省',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 8,'成都',7)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 9,'深圳',5)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 10,'石家庄',4)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 11,'辽宁省',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 12,'大连',11)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 13,'上海',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 14,'天河软件园',6)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 15,'汕头',5)[/align]
[align=left]**********************************************************************[/align]
[align=left] 2.添加一个新页面,放置一个TreeView控件[/align]
[align=left]3.页面代码如下:主要是用到了递归算法[/align]
[align=left]DataSet ds = new DataSet();[/align]
[align=left] [/align]
[align=left] private void Page_Load(object sender, System.EventArgs e)[/align]
[align=left] {[/align]
[align=left] if (!IsPostBack)[/align]
[align=left] {[/align]
[align=left] // 在此处放置用户代码以初始化页面[/align]
[align=left] SqlConnection CN = new SqlConnection();[/align]
[align=left] try[/align]
[align=left] {[/align]
[align=left] //初始化连接字符串[/align]
[align=left] CN.ConnectionString = "Data Source=A21D1656E2B7442//SQL2000;Initial Catalog=xiazai;Integrated Security=True";[/align]
[align=left] CN.Open();[/align]
[align=left] //添加命令,从数据库中得到数据[/align]
[align=left] SqlCommand sqlCmd = new SqlCommand();[/align]
[align=left] sqlCmd.Connection = CN;[/align]
[align=left] sqlCmd.CommandText = "select * from tbTree";[/align]
[align=left] sqlCmd.CommandType = CommandType.Text;[/align]
[align=left] SqlDataAdapter adp = new SqlDataAdapter(sqlCmd);[/align]
[align=left] adp.Fill(ds);[/align]
[align=left] }[/align]
[align=left] catch (Exception ex)[/align]
[align=left] {[/align]
[align=left] throw (ex);[/align]
[align=left] }[/align]
[align=left] finally[/align]
[align=left] {[/align]
[align=left] CN.Close();[/align]
[align=left] }[/align]
[align=left] //调用递归函数,完成树形结构的生成[/align]
[align=left] //tn2=AddTree(0, (TreeNode)null);[/align]
[align=left] //TreeView1.Nodes.Add(tn2);[/align]
[align=left] AddTree(0, (TreeNode)null);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] public void AddTree(int ParentID, TreeNode pNode)[/align]
[align=left] {[/align]
[align=left] TreeNode tn1 = new TreeNode();[/align]
[align=left] DataView dvTree = new DataView(ds.Tables[0]);[/align]
[align=left] //过滤ParentID,得到当前的所有子节点[/align]
[align=left] dvTree.RowFilter = "[PARENTID] = " + ParentID;[/align]
[align=left] foreach (DataRowView Row in dvTree)[/align]
[align=left] {[/align]
[align=left] if (pNode == null)[/align]
[align=left] { //'?添加根节点[/align]
[align=left] [/align]
[align=left] tn1.Text = Row["ConText"].ToString();[/align]
[align=left] TreeView1.Nodes.Add(tn1);[/align]
[align=left] tn1.Expanded = true;[/align]
[align=left] AddTree(Int32.Parse(Row["ID"].ToString()), tn1); //再次递归[/align]
[align=left] }[/align]
[align=left] else[/align]
[align=left] { //添加当前节点的子节点[/align]
[align=left] TreeNode tn2 = new TreeNode();[/align]
[align=left] tn2.Text = Row["ConText"].ToString();[/align]
[align=left] //pNode.Nodes.Add(tn2);[/align]
[align=left] pNode.ChildNodes.Add(tn2);[/align]
[align=left] tn1.Expanded = true;[/align]
[align=left] AddTree(Int32.Parse(Row["ID"].ToString()), tn2); //再次递归[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
}
[align=left] [/align]
[align=left]在SQL SERVER 2000里建立一个表tbTree,表的结构设计如下:[/align]
[align=left]列名 数据类型 描述 长度 主键[/align]
[align=left]ID Int 节点编号 4 是[/align]
[align=left]ParentID Int 父节点编号 4 [/align]
[align=left]ConText Nvarchar 我们要显示的节点内容 50 [/align]
[align=left] [/align]
[align=left]在SQL SERVER 2000中建表的脚本:[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]CREATE TABLE [dbo].[tbTree] ([/align]
[align=left] [ID] [int] NOT NULL ,[/align]
[align=left] [Context] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,[/align]
[align=left] [ParentID] [int] NULL [/align]
[align=left]) ON [PRIMARY][/align]
[align=left] [/align]
[align=left]在表中添加如下记录:[/align]
[align=left] [/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 1,'中国',0)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 2,'北京',11)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 3,'天津',11)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 4,'河北省',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 5,'广东省',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 6,'广州',5)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 7,'四川省',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 8,'成都',7)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 9,'深圳',5)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 10,'石家庄',4)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 11,'辽宁省',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 12,'大连',11)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 13,'上海',1)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 14,'天河软件园',6)[/align]
[align=left]insert tbtree (ID,Context,ParentID) values ( 15,'汕头',5)[/align]
[align=left]**********************************************************************[/align]
[align=left] 2.添加一个新页面,放置一个TreeView控件[/align]
[align=left]3.页面代码如下:主要是用到了递归算法[/align]
[align=left]DataSet ds = new DataSet();[/align]
[align=left] [/align]
[align=left] private void Page_Load(object sender, System.EventArgs e)[/align]
[align=left] {[/align]
[align=left] if (!IsPostBack)[/align]
[align=left] {[/align]
[align=left] // 在此处放置用户代码以初始化页面[/align]
[align=left] SqlConnection CN = new SqlConnection();[/align]
[align=left] try[/align]
[align=left] {[/align]
[align=left] //初始化连接字符串[/align]
[align=left] CN.ConnectionString = "Data Source=A21D1656E2B7442//SQL2000;Initial Catalog=xiazai;Integrated Security=True";[/align]
[align=left] CN.Open();[/align]
[align=left] //添加命令,从数据库中得到数据[/align]
[align=left] SqlCommand sqlCmd = new SqlCommand();[/align]
[align=left] sqlCmd.Connection = CN;[/align]
[align=left] sqlCmd.CommandText = "select * from tbTree";[/align]
[align=left] sqlCmd.CommandType = CommandType.Text;[/align]
[align=left] SqlDataAdapter adp = new SqlDataAdapter(sqlCmd);[/align]
[align=left] adp.Fill(ds);[/align]
[align=left] }[/align]
[align=left] catch (Exception ex)[/align]
[align=left] {[/align]
[align=left] throw (ex);[/align]
[align=left] }[/align]
[align=left] finally[/align]
[align=left] {[/align]
[align=left] CN.Close();[/align]
[align=left] }[/align]
[align=left] //调用递归函数,完成树形结构的生成[/align]
[align=left] //tn2=AddTree(0, (TreeNode)null);[/align]
[align=left] //TreeView1.Nodes.Add(tn2);[/align]
[align=left] AddTree(0, (TreeNode)null);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] public void AddTree(int ParentID, TreeNode pNode)[/align]
[align=left] {[/align]
[align=left] TreeNode tn1 = new TreeNode();[/align]
[align=left] DataView dvTree = new DataView(ds.Tables[0]);[/align]
[align=left] //过滤ParentID,得到当前的所有子节点[/align]
[align=left] dvTree.RowFilter = "[PARENTID] = " + ParentID;[/align]
[align=left] foreach (DataRowView Row in dvTree)[/align]
[align=left] {[/align]
[align=left] if (pNode == null)[/align]
[align=left] { //'?添加根节点[/align]
[align=left] [/align]
[align=left] tn1.Text = Row["ConText"].ToString();[/align]
[align=left] TreeView1.Nodes.Add(tn1);[/align]
[align=left] tn1.Expanded = true;[/align]
[align=left] AddTree(Int32.Parse(Row["ID"].ToString()), tn1); //再次递归[/align]
[align=left] }[/align]
[align=left] else[/align]
[align=left] { //添加当前节点的子节点[/align]
[align=left] TreeNode tn2 = new TreeNode();[/align]
[align=left] tn2.Text = Row["ConText"].ToString();[/align]
[align=left] //pNode.Nodes.Add(tn2);[/align]
[align=left] pNode.ChildNodes.Add(tn2);[/align]
[align=left] tn1.Expanded = true;[/align]
[align=left] AddTree(Int32.Parse(Row["ID"].ToString()), tn2); //再次递归[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
}
相关文章推荐
- C# TreeView控件动态绑定数据库
- 关于VS2005中TreeView控件动态绑定数据库
- 树型节点与数据库的动态连接(asp.net 2.0 TreeView控件的使用)
- C# TreeView 控件的父子节点动态生成
- [C#]读取数据库,动态生成TreeView[递归]
- 第七章 业务数据库的管理(五)-- C#动态创建控件
- C# WinForm TreeView 动态绑定数据库例如:省、市、区县 三级
- 利用TreeView控件 从数据库中动态载入数据
- TreeView控件通过数据库动态生成树状结构
- C#里的treeview控件如何能绑定数据库里的数据
- dataGridView 动态邦定数据库 C#
- C# treeview 控件动态绑定数据
- C#之Winform中treeview控件绑定数据库
- C#控件TreeView与数据库的操作
- C#动态从数据库中取值绑定TreeView节点
- C#从数据库动态邦定TreeView控件
- C# TreeView树视图控件 如何把树与数据库的信息进行绑定
- 转:C#控件TreeView与数据库的操作
- 【原创】C#控件TreeView与数据库的操作