Asp.net 1.1 Treeview 控件的绑定
2008-03-07 14:43 蓝之风 阅读(793) 评论(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
前台文件:
2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

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>
数据结构:
2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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

2

3

4

5

6

7

8

9

10

11
作者:蓝之风
出处:http://www.cnblogs.com/vaiyanzi/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架