Asp.net 1.1 Treeview 控件的绑定
2008-03-07 14:43 蓝之风 阅读(804) 评论(0) 收藏 举报Asp.net 1.1 Treeview 控件的一个简单的数据绑定,Asp.net1.1自身没有Treeview控件,可以从网上download安装即可,树形控件绑定的一个重要的思想就是递归的思想,所以在绑定的时候就要使用递归的方法,考录到性能问题,通常是将数据一次性load到一个容器中如:缓存,然后根据条件在缓存中将数据绑定到树形控件上,下面是个简单的例子
后台代码:
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 Microsoft.Web.UI.WebControls;
13
namespace TreeTest
14
{
15
/// <summary>
16
/// WebForm1 的摘要说明。
17
/// </summary>
18
public class WebForm1 : System.Web.UI.Page
19
{
20
protected Microsoft.Web.UI.WebControls.TreeView Tree2;
21
22
private void Page_Load(object sender, System.EventArgs e)
23
{
24
if(!IsPostBack)
25
{
26
InitTree();
27
}
28
}
29![]()
30
Web 窗体设计器生成的代码
50![]()
51
52
private void InitTree()
53
{
54
try
55
{
56
TreeNode node=new TreeNode();
57
node.Text="根节点";
58
node.ID="-1";
59
string sqlString="Select * From Tree Where ParentID=0";
60
Tree2.Nodes.Add(node);
61
SqlDataReader rd=GetDataReader(sqlString);
62
while(rd.Read())
63
{
64
string pId=rd["ID"].ToString();
65
TreeNode node1=new TreeNode();
66
node1.Text=rd.GetString(1);
67
node1.ID=rd["ID"].ToString();
68
node.Nodes.Add(node1);
69
MakeTree(node1,pId);
70
}
71
}
72
catch(Exception err){Console.WriteLine(err.Message);}
73
finally{}
74
}
75![]()
76
private void MakeTree(TreeNode fnode,string pId)
77
{
78
try
79
{
80
TreeNode node;
81
string sqlString="Select ID,Name,ParentID From Tree Where ParentID="+pId;
82
SqlDataReader rd=GetDataReader(sqlString);
83
while(rd.Read())
84
{
85
string PID=rd["ID"].ToString();
86
node=new TreeNode();
87
node.Text=rd["Name"].ToString();
88
node.ID=rd["ID"].ToString();
89
fnode.Nodes.Add(node);
90
MakeTree(node,PID); //递归
91
}
92
rd.Close();
93
}
94
catch(Exception err)
95
{
96
Console.WriteLine(err.Message);
97
}
98
finally{}
99
}
100![]()
101
private SqlDataReader GetDataReader(string sqlString)
102
{
103
try
104
{
105
string conString=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
106
SqlConnection conn=new SqlConnection(conString);
107
SqlCommand cmd=new SqlCommand(sqlString);
108
conn.Open();
109
cmd.Connection=conn;
110
return cmd.ExecuteReader();
111
}
112
catch (System.Exception e)
113
{
114
return null;
115
}
116
finally
117
{ }
118
}
119![]()
120
}
121
}
122![]()
前台文件:
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 Microsoft.Web.UI.WebControls;13
namespace TreeTest14
{15
/// <summary>16
/// WebForm1 的摘要说明。17
/// </summary>18
public class WebForm1 : System.Web.UI.Page19
{20
protected Microsoft.Web.UI.WebControls.TreeView Tree2;21
22
private void Page_Load(object sender, System.EventArgs e)23
{24
if(!IsPostBack)25
{26
InitTree();27
}28
}29

30
Web 窗体设计器生成的代码50

51
52
private void InitTree()53
{54
try55
{ 56
TreeNode node=new TreeNode();57
node.Text="根节点";58
node.ID="-1"; 59
string sqlString="Select * From Tree Where ParentID=0";60
Tree2.Nodes.Add(node); 61
SqlDataReader rd=GetDataReader(sqlString);62
while(rd.Read())63
{ 64
string pId=rd["ID"].ToString();65
TreeNode node1=new TreeNode();66
node1.Text=rd.GetString(1);67
node1.ID=rd["ID"].ToString(); 68
node.Nodes.Add(node1); 69
MakeTree(node1,pId); 70
} 71
}72
catch(Exception err){Console.WriteLine(err.Message);}73
finally{}74
}75

76
private void MakeTree(TreeNode fnode,string pId)77
{78
try79
{80
TreeNode node; 81
string sqlString="Select ID,Name,ParentID From Tree Where ParentID="+pId;82
SqlDataReader rd=GetDataReader(sqlString);83
while(rd.Read())84
{85
string PID=rd["ID"].ToString(); 86
node=new TreeNode();87
node.Text=rd["Name"].ToString();88
node.ID=rd["ID"].ToString(); 89
fnode.Nodes.Add(node); 90
MakeTree(node,PID); //递归 91
}92
rd.Close(); 93
}94
catch(Exception err)95
{96
Console.WriteLine(err.Message);97
}98
finally{} 99
}100

101
private SqlDataReader GetDataReader(string sqlString)102
{103
try104
{ 105
string conString=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];106
SqlConnection conn=new SqlConnection(conString);107
SqlCommand cmd=new SqlCommand(sqlString); 108
conn.Open();109
cmd.Connection=conn;110
return cmd.ExecuteReader(); 111
}112
catch (System.Exception e)113
{114
return null;115
} 116
finally117
{ }118
}119

120
}121
}122

1
<%@ Register TagPrefix="iewc1" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls" %>
2
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="TreeTest.WebForm1" %>
3
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
4
<HTML>
5
<HEAD>
6
<title>WebForm1</title>
7
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
8
<meta name="CODE_LANGUAGE" Content="C#">
9
<meta name="vs_defaultClientScript" content="JavaScript">
10
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
11
</HEAD>
12
<body MS_POSITIONING="GridLayout">
13
<form id="Form1" method="post" runat="server">
14
<FONT face="宋体">
15
<iewc1:TreeView id="Tree2" style="Z-INDEX: 101; LEFT: 104px; POSITION: absolute; TOP: 160px" runat="server"></iewc1:TreeView></FONT>
16
</form>
17
</body>
18
</HTML>
数据结构:
<%@ Register TagPrefix="iewc1" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls" %>2
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="TreeTest.WebForm1" %>3
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >4
<HTML>5
<HEAD>6
<title>WebForm1</title>7
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">8
<meta name="CODE_LANGUAGE" Content="C#">9
<meta name="vs_defaultClientScript" content="JavaScript">10
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">11
</HEAD>12
<body MS_POSITIONING="GridLayout">13
<form id="Form1" method="post" runat="server">14
<FONT face="宋体">15
<iewc1:TreeView id="Tree2" style="Z-INDEX: 101; LEFT: 104px; POSITION: absolute; TOP: 160px" runat="server"></iewc1:TreeView></FONT>16
</form>17
</body>18
</HTML> 1
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Tree]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
2
drop table [dbo].[Tree]
3
GO
4![]()
5
CREATE TABLE [dbo].[Tree] (
6
[ID] [int] IDENTITY (1, 1) NOT NULL ,
7
[Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
8
[ParentID] [int] NOT NULL
9
) ON [PRIMARY]
10
GO
11
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Tree]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)2
drop table [dbo].[Tree]3
GO4

5
CREATE TABLE [dbo].[Tree] (6
[ID] [int] IDENTITY (1, 1) NOT NULL ,7
[Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,8
[ParentID] [int] NOT NULL 9
) ON [PRIMARY]10
GO11
作者:蓝之风
出处:http://www.cnblogs.com/vaiyanzi/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


浙公网安备 33010602011771号