方法:
(1)调用函数从数据库中获取商品种类的数据。
(2)创建TreeView控件的根节点。
(3)递归调用函数创建TreeView控件的其它子节点。
(4)调用函数Page_Load(Object sender,EventArgs e)完成TreeView控件的初始化过程。
方法:
(1)调用函数从数据库中获取商品种类的数据。
(2)创建TreeView控件的根节点。
(3)递归调用函数创建TreeView控件的其它子节点。
(4)调用函数Page_Load(Object sender,EventArgs e)完成TreeView控件的初始化过程。
完整代码如下:

Code
1
using System;
2
3
using System.Data;
4
5
using System.Configuration;
6
7
using System.Collections;
8
9
using System.Web;
10
11
using System.Web.Security;
12
13
using System.Web.UI;
14
15
using System.Web.UI.WebControls;
16
17
using System.Web.UI.WebControls.WebParts;
18
19
using System.Web.UI.HtmlControls;
20
21
using System.Data.SqlClient;
22
23
24
25
public partial class UsingTreeView : System.Web.UI.Page
26
27

{
28
29
protected void Page_Load(object sender,EventArgs e)
30
31
{
32
33
if(!Page.IsPostBack)
34
35
{ /**////显示数据
36
37
BindCategoryTreeView(CategoryView,true,"-1");
38
39
}
40
41
}
42
43
public void BindCategoryTreeView(TreeView treeView,bool isExpanded,string sSelectedData)
44
45
{
46
47
DataTable dataTable = GetCategorys().Tables[0];
48
49
treeView.Nodes.Clear(); /**////清空树的所有节点
50
51
52
53
DataRow[] rowList = dataTable.Select("ParentID='-1'"); /**////获取所有 DataRow 对象的数组。
54
55
if(rowList.Length <= 0) return;
56
57
/**////创建根节点
58
59
TreeNode rootNode = new TreeNode();
60
61
/**////设置根节点属性
62
63
rootNode.Text = rowList[0]["Desn"].ToString();
64
65
rootNode.Value = rowList[0]["CategoryID"].ToString(); /**////设置根节点的Key值
66
67
rootNode.Expanded = isExpanded; /**////使用 Expanded 属性指定或确定节点的展开状态。
68
69
rootNode.Selected = true;
70
71
/**////添加根节点
72
73
treeView.Nodes.Add(rootNode);
74
75
/**////创建其他节点
76
77
CreateChildNode(rootNode,dataTable,isExpanded,sSelectedData);// 递归创建其它节点
78
79
}
80
81
private void CreateChildNode(TreeNode parentNode,DataTable dataTable,bool isExpanded,string sSelectedData)
82
83
{
84
85
/**////选择数据时,添加了排序表达式OrderBy
86
87
DataRow[] rowList = dataTable.Select("ParentID='" + parentNode.Value + "'","OrderBy");
88
89
foreach(DataRow row in rowList)
90
91
{ /**////创建新节点
92
93
TreeNode node = new TreeNode();
94
95
/**////设置节点的属性
96
97
node.Text = row["Desn"].ToString();
98
99
node.Value = row["CategoryID"].ToString();
100
101
node.Expanded = isExpanded;
102
103
if(node.Value == sSelectedData)
104
105
{
106
107
node.Selected = true;
108
109
}
110
111
112
113
parentNode.ChildNodes.Add(node);
114
115
/**////递归调用,创建其他节点
116
117
CreateChildNode(node,dataTable,isExpanded,sSelectedData);
118
119
}
120
121
}
122
123
public DataSet GetCategorys()
124
125
{
126
127
/**////创建链接
128
129
SqlConnection myConnection = new SqlConnection(
130
131
ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].ConnectionString);
132
133
134
135
/**////定义SQL语句
136
137
string cmdText = "SELECT * FROM Category";
138
139
/**////创建Command
140
141
SqlDataAdapter da = new SqlDataAdapter(cmdText,myConnection);
142
143
144
145
/**////定义DataSet
146
147
DataSet ds = new DataSet();
148
149
try
150
151
{
152
153
/**////打开链接
154
155
myConnection.Open();
156
157
/**////读取数据
158
159
da.Fill(ds);
160
161
}
162
163
catch(SqlException ex)
164
165
{
166
167
/**////抛出异常
168
169
throw new Exception(ex.Message,ex);
170
171
}
172
173
finally
174
175
{
176
177
myConnection.Close();
178
179
}
180
181
/**////返回DataSet
182
183
return ds;
184
185
}
186
187
}