动态创建TreeView控件
方法:
(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
1using System;
2
3using System.Data;
4
5using System.Configuration;
6
7using System.Collections;
8
9using System.Web;
10
11using System.Web.Security;
12
13using System.Web.UI;
14
15using System.Web.UI.WebControls;
16
17using System.Web.UI.WebControls.WebParts;
18
19using System.Web.UI.HtmlControls;
20
21using System.Data.SqlClient;
22
23
24
25public 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}
1using System;
2
3using System.Data;
4
5using System.Configuration;
6
7using System.Collections;
8
9using System.Web;
10
11using System.Web.Security;
12
13using System.Web.UI;
14
15using System.Web.UI.WebControls;
16
17using System.Web.UI.WebControls.WebParts;
18
19using System.Web.UI.HtmlControls;
20
21using System.Data.SqlClient;
22
23
24
25public 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}
posted on 2008-12-02 15:31 CodeShark 阅读(1164) 评论(0) 编辑 收藏 举报