.NET平台下Web树形结构程序设计
数据库设计
首先,我们在SQL SERVER 2000里建立一个表tbTree,表的结构设计如下:
列名 数据类型 描述 长度 主键
ID Int 节点编号 4 是
ParentID Int 父节点编号 4
ConText Nvarchar 我们要显示的节点内容 50
在SQL SERVER 2000中建表的脚本:
1
CREATE TABLE [dbo].[tbTree] (
2
[ID] [int] IDENTITY (1, 1) NOT NULL ,
3
[Context] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
4
[ParentID] [int] NULL
5
) ON [PRIMARY]
6![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
在表中添加如下记录:
1
SET IDENTITY_INSERT tbtree ON
2
insert tbtree (ID,Context,ParentID) values ( 1,'中国',0)
3
insert tbtree (ID,Context,ParentID) values ( 2,'北京',11)
4
insert tbtree (ID,Context,ParentID) values ( 3,'天津',11)
5
insert tbtree (ID,Context,ParentID) values ( 4,'河北省',1)
6
insert tbtree (ID,Context,ParentID) values ( 5,'广东省',1)
7
insert tbtree (ID,Context,ParentID) values ( 6,'广州',5)
8
insert tbtree (ID,Context,ParentID) values ( 7,'四川省',1)
9
insert tbtree (ID,Context,ParentID) values ( 8,'成都',7)
10
insert tbtree (ID,Context,ParentID) values ( 9,'深圳',5)
11
insert tbtree (ID,Context,ParentID) values ( 10,'石家庄',4)
12
insert tbtree (ID,Context,ParentID) values ( 11,'辽宁省',1)
13
insert tbtree (ID,Context,ParentID) values ( 12,'大连',11)
14
insert tbtree (ID,Context,ParentID) values ( 13,'上海',1)
15
insert tbtree (ID,Context,ParentID) values ( 14,'天河软件园',6)
16
insert tbtree (ID,Context,ParentID) values ( 15,'汕头',5)
17
SET IDENTITY_INSERT tbtree off
18![](/Images/OutliningIndicators/None.gif)
19![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
HTML页:
1
<div>
2
<asp:TreeView ID="TreeView1" runat="server">
3
4
</asp:TreeView>
5
</div>
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
C#
1
using System;
2
using System.Collections;
3
using System.ComponentModel;
4
using System.Data;
5
using System.Drawing;
6
using System.Web;
7
using System.Web.SessionState;
8
using System.Web.UI;
9
using System.Web.UI.WebControls;
10
using System.Web.UI.HtmlControls;
11
using System.Data.SqlClient;
12
using System.Linq;
13![](/Images/OutliningIndicators/None.gif)
14![](/Images/OutliningIndicators/None.gif)
15
namespace TreeView
16
{
17
public partial class _Default : System.Web.UI.Page
18
{
19
protected DataSet ds = new DataSet();
20
protected void Page_Load(object sender, EventArgs e)
21
{
22
// 定义数据库连接
23
SqlConnection conn = new SqlConnection(@"server=192.168.1.102;database=520tt;uid=sa;pwd=1;");
24
try
25
{
26
conn.Open();
27
SqlDataAdapter da = new SqlDataAdapter(@"SELECT * FROM dbo.tbTree ",conn);
28
ds = new DataSet();
29
da.Fill(ds);
30
this.ViewState["ds"] = ds;
31
}
32
catch (Exception ex)
33
{
34
Response.Write(ex.Message);
35
}
36
finally
37
{
38
conn.Close();
39
}
40![](/Images/OutliningIndicators/InBlock.gif)
41
//调用递归函数,完成树形结构的生成
42
AddTree(0, (TreeNode)null);
43![](/Images/OutliningIndicators/InBlock.gif)
44
}
45![](/Images/OutliningIndicators/InBlock.gif)
46![](/Images/OutliningIndicators/InBlock.gif)
47
//递归添加树的节点
48
public void AddTree(int ParentID, TreeNode pNode)
49
{
50
DataView dvTree = new DataView(ds.Tables[0]);
51
//过滤ParentID,得到当前的所有子节点
52
dvTree.RowFilter = "[PARENTID] = " + ParentID;
53![](/Images/OutliningIndicators/InBlock.gif)
54
foreach (DataRowView Row in dvTree)
55
{
56
TreeNode Node = new TreeNode();
57
if (pNode == null)
58
{ //添加根节点
59
Node.Text = Row["ConText"].ToString();
60
TreeView1.Nodes.Add(Node);
61
Node.Expanded = true;
62
AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归
63
}
64
else
65
{ //̀添加当前节点的子节点
66
Node.Text = Row["ConText"].ToString();
67
pNode.ChildNodes.Add(Node);
68
Node.Expanded = false;
69
AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归
70
}
71
}
72
}
73![](/Images/OutliningIndicators/InBlock.gif)
74
}
75
}
76![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
71
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
75
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
76
![](/Images/OutliningIndicators/None.gif)