先建立2个表
-- 父表
create table tb_parent(
-- 主键
ids int constraint pk_tb_parent_ids primary key ,
parentName nvarchar ( 1000 )
)
go
insert into tb_parent
select 1 , ' aaa '
union all
select 2 , ' bbb '
union all
select 3 , ' ccc '
go
-- 子表
create table tb_child(
parentId int ,
childId int ,
childName nvarchar ( 1000 ),
-- parentId外键
constraint fk_tb_child_tb_parent_parentId
FOREIGN KEY (parentId)
REFERENCES tb_parent(ids)
)
go
insert into tb_child
select 1 , 101 , ' a_1 '
union all
select 1 , 102 , ' a_2 '
go
insert into tb_child
select 2 , 201 , ' b_1 '
union all
select 2 , 202 , ' b_2 '
go
insert into tb_child
select 3 , 301 , ' c_1 '
union all
select 3 , 302 , ' c_2 '
union all
select 3 , 303 , ' c_3 '
go
再创建3个过程
-- 得到父表数据
create proc proc_GetparentData
as
SELECT [ ids ] , [ parentName ]
FROM [ tb_parent ]
go
-- 得到子表数据
create proc proc_GetchildData
as
SELECT [ parentId ] , [ childId ] , [ childName ]
FROM [ tb_child ]
go
-- 由父id得到子表数据
create proc proc_GetchildDataBYparentId
@parentId int
as
SELECT [ parentId ] , [ childId ] , [ childName ]
FROM [ tb_child ]
where parentId = @parentId
go
WebForm5.aspx
1
<%
@ Page language
=
"
c#
"
Codebehind
=
"
WebForm5.aspx.cs
"
AutoEventWireup
=
"
false
"
Inherits
=
"
webtest.WebForm5
"
%>
2 <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
3 < HTML >
4 < HEAD >
5 < title > WebForm5 </ title >
6 < meta content ="Microsoft Visual Studio .NET 7.1" name ="GENERATOR" >
7 < meta content ="C#" name ="CODE_LANGUAGE" >
8 < meta content ="JavaScript" name ="vs_defaultClientScript" >
9 < meta content ="http://schemas.microsoft.com/intellisense/ie5" name ="vs_targetSchema" >
10 </ HEAD >
11 < body MS_POSITIONING ="GridLayout" >
12 < form id ="Form1" method ="post" runat ="server" >
13 父: < asp:dropdownlist id ="DropDownList_parent" runat ="server" onChange ="changevalue(document.Form1.DropDownList_parent.options[document.Form1.DropDownList_parent.selectedIndex].value)"
14 Width ="272px" ></ asp:dropdownlist >
15 < br >
16 子: < asp:dropdownlist id ="DropDownList_child" runat ="server" Width ="272px" ></ asp:dropdownlist >
17 < br >
18 < asp:label id ="msgLabel" runat ="server" Width ="416px" ></ asp:label >
19 < br >
20 < asp:Button id ="Buttonok" runat ="server" Text ="click" ></ asp:Button ></ form >
21 </ body >
22 </ HTML >
2 <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
3 < HTML >
4 < HEAD >
5 < title > WebForm5 </ title >
6 < meta content ="Microsoft Visual Studio .NET 7.1" name ="GENERATOR" >
7 < meta content ="C#" name ="CODE_LANGUAGE" >
8 < meta content ="JavaScript" name ="vs_defaultClientScript" >
9 < meta content ="http://schemas.microsoft.com/intellisense/ie5" name ="vs_targetSchema" >
10 </ HEAD >
11 < body MS_POSITIONING ="GridLayout" >
12 < form id ="Form1" method ="post" runat ="server" >
13 父: < asp:dropdownlist id ="DropDownList_parent" runat ="server" onChange ="changevalue(document.Form1.DropDownList_parent.options[document.Form1.DropDownList_parent.selectedIndex].value)"
14 Width ="272px" ></ asp:dropdownlist >
15 < br >
16 子: < asp:dropdownlist id ="DropDownList_child" runat ="server" Width ="272px" ></ asp:dropdownlist >
17 < br >
18 < asp:label id ="msgLabel" runat ="server" Width ="416px" ></ asp:label >
19 < br >
20 < asp:Button id ="Buttonok" runat ="server" Text ="click" ></ asp:Button ></ form >
21 </ body >
22 </ HTML >
WebForm5.aspx.cs
1
using
System;
2
using
System.Collections;
3
using
System.ComponentModel;
4
using
System.Data;
5
using
System.Data.SqlClient;
6
using
System.Drawing;
7
using
System.Web;
8
using
System.Web.SessionState;
9
using
System.Web.UI;
10
using
System.Web.UI.WebControls;
11
using
System.Web.UI.HtmlControls;
12
using
System.Text;
13
14
using
Microsoft.ApplicationBlocks.Data;
15
16
namespace
webtest
17
{
18
public
class
WebForm5 : System.Web.UI.Page
19
{
20
protected
System.Web.UI.WebControls.DropDownList DropDownList_parent;
21
protected
System.Web.UI.WebControls.DropDownList DropDownList_child;
22
23
protected
System.Web.UI.WebControls.Label msgLabel;
24
protected
System.Web.UI.WebControls.Button Buttonok;
25
26
readonly
string
conString
=
"
uid=sa;pwd=123;database=TestDataBase
"
;
27
28
private
void
Page_Load(
object
sender, System.EventArgs e)
29
{
30
regJS();
31
Bind();
32
}
33
34
private
void
regJS()
35
{
36
SqlDataReader rs
=
this
.GetchildData();
37
StringBuilder sb
=
new
StringBuilder(
1000
);
38
39
sb.Append(
"
<Script Language=JavaScript>
"
);
40
sb.Append(Environment.NewLine);
41
42
sb.Append(
"
arr=new Array();
"
);
43
sb.Append(Environment.NewLine);
44
45
int
i
=
0
;
46
while
(rs.Read())
47
{
48
sb.AppendFormat(
"
arr[{0}]=new Array('{1}','{2}','{3}')
"
,i,rs[
"
parentId
"
],rs[
"
childId
"
],rs[
"
childName
"
]);
49
sb.Append(Environment.NewLine);
50
i
=
i
+
1
;
51
}
52
53
if
(
!
rs.IsClosed )
54
{
55
rs.Close();
56
}
57
58
sb.Append(Environment.NewLine);
59
sb.AppendFormat(
"
var counts={0}
"
,i);
60
sb.Append(Environment.NewLine);
61
sb.Append(
"
function changevalue(parentId)
"
);
62
sb.Append(Environment.NewLine);
63
sb.Append(
"
{
"
);
64
sb.Append(Environment.NewLine);
65
sb.Append(
"
document.Form1.DropDownList_child.length = 0;
"
);
66
sb.Append(Environment.NewLine);
67
sb.Append(
"
var i;
"
);
68
sb.Append(Environment.NewLine);
69
sb.Append(
"
for(i=0; i<counts; i++)
"
);
70
sb.Append(Environment.NewLine);
71
sb.Append(
"
{
"
);
72
sb.Append(Environment.NewLine);
73
sb.Append(
"
if(arr[i][0]==parentId)
"
);
74
sb.Append(Environment.NewLine);
75
sb.Append(
"
{
"
);
76
sb.Append(Environment.NewLine);
77
sb.Append(
"
document.Form1.DropDownList_child.options[document.Form1.DropDownList_child.length]=new Option(arr[i][2],arr[i][1]);
"
);
78
sb.Append(Environment.NewLine);
79
sb.Append(
"
}
"
);
80
sb.Append(Environment.NewLine);
81
sb.Append(
"
}
"
);
82
sb.Append(Environment.NewLine);
83
sb.Append(
"
}
"
);
84
sb.Append(Environment.NewLine);
85
sb.Append(
"
</script>
"
);
86
87
if
(
!
Page.IsClientScriptBlockRegistered(
"
jsScript
"
))
88
{
89
this
.RegisterClientScriptBlock(
"
jsScript
"
,sb.ToString());
90
}
91
}
92
93
void
Bind()
94
{
95
//
获得父表
96
this
.DropDownList_parent.DataSource
=
SqlHelper.ExecuteReader(conString,CommandType.StoredProcedure,
"
proc_GetparentData
"
);
97
this
.DropDownList_parent.DataTextField
=
"
parentName
"
;
98
this
.DropDownList_parent.DataValueField
=
"
ids
"
;
99
this
.DropDownList_parent.DataBind();
100
101
//
根据父表id得子表
102
this
.DropDownList_child.DataSource
=
GetchildData(Convert.ToInt32(
this
.DropDownList_parent.SelectedValue));
103
this
.DropDownList_child.DataTextField
=
"
childName
"
;
104

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

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

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
