在没有接触Ajax之前,总觉得它是那么遥不可及.大家都知道,Ajax它不是一项技术.它是多种技术的结合.光是JS已让人很头痛了,再加上XML,XHTML,XMLHttpRequest,CSS,DOM等,更是让人晕头转向.呵...晕归晕,可是工作上需要,你不得不学.于是上两个星期决定下来,这两个星期一定要把Ajax搞个明白.经过偶两个星期的夜车,终于让自己有了点眉目.下面则是偶做的一个三级联动...
前台代码:
1
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="selectStudent.aspx.cs" Inherits="selectStudent" %>
2
3
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5
<html xmlns="http://www.w3.org/1999/xhtml" >
6
<head runat="server">
7
<title>无标题页</title>
8
</head>
9
<script language="javascript" type="text/javascript">
10
function loadclass()
11
{
12
var ddlclass=document.getElementById("ddlClass"); //定义一个ddlClass,用于当选定ddlGrade时加载数据
13
ddlclass.innerText="";
14
15
for(var i=0;i<ddlclass.length;i++) //当它第一次加载时已有数据
所以得清空它
.
16
{
17
ddlclass.remove(i);
18
}
19
20
var xmlhttp; //创建一个XMLHttpRequest对象
21
try{
22
xmlhttp=new ActiveXObject('Msxml2.XMLHTTP');
23
}catch(e){
24
try{
25
xml=new ActiveXObject('Microsoft.XMLHTTP');
26
}catch(e){
27
try{
28
xml=new XMLHttpRequest();
29
}catch(e){}
30
}
31
}
32
33
var gradenumber=document.getElementById("ddlGrade").value;
34
35
36
xmlhttp.onreadystatechange=function() //当异步请求成功,所要处理的事情
.
37
{
38
if(xmlhttp.readyState==4)
39
{
40
if(xmlhttp.status==200)
41
{
42
var classitem = xmlhttp.responseText; //获取服务器返回的值
43
//alert(xmlhttp.responseText);
44
45
if(classitem !="")
46
{
47
var allArry=classitem.split(","); //把所返回的值作为字符串拆分
48
49
for(var i=1;i<allArry.length;i++)
50
{
51
var thisArry=allArry[i].split("|");
52
document.getElementById("ddlClass").options.add(new Option(thisArry[1].toString(),thisArry[0].toString())); //再把字符串添加到ddlClass中
53
}
54
}
55
56
var classnumber=document.getElementById("ddlClass").value;
57
loadstudent();
58
59
}
60
else
61
{
62
alert("网络失败");
63
}
64
}
65
}
66
67
xmlhttp.open("GET","selectStudent.aspx?gradenumber="+gradenumber,false); //创建一个请求
.
68
xmlhttp.send(null);
69
70
}
71
72
function loadstudent()
73
{
74
var ddlstudent=document.getElementById("ddlStudent");
75
ddlstudent.innerText="";
76
77
var classnumber=document.getElementById("ddlClass").value;
78
79
for(var i=0;i<ddlstudent.length;i++)
80
{
81
ddlstudent.remove(i);
82
}
83
84
var xmlhttp2;
85
try{
86
xmlhttp2=new ActiveXObject('Msxml2.XMLHTTP');
87
}catch(e){
88
try{
89
xmlhttp2=new ActiveXObject('Microsoft.XMLHTTP');
90
}catch(e){
91
try{
92
xmlhttp2=new XMLHttpRequest();
93
}catch(e){}
94
}
95
}
96
97
xmlhttp2.onreadystatechange=function()
98
{
99
if(xmlhttp2.readyState==4)
100
{
101
if(xmlhttp2.status==200)
102
{
103
var studentitem=xmlhttp2.responseText;
104
alert(xmlhttp2.responseText);
105
if(studentitem !="")
106
{
107
var allArry=studentitem.split(",");
108
109
for(var i=1;i<allArry.length;i++)
110
{
111
var thisArry=allArry[i].split("|");
112
document.getElementById("ddlStudent").options.add(new Option(thisArry[1].toString(),thisArry[0].toString()));
113
}
114
}
115
}
116
else
117
{
118
alert("网络失败");
119
}
120
}
121
}
122
123
xmlhttp2.open("GET","selectStudent.aspx?classnumber="+classnumber,false);
124
xmlhttp2.send(null);
125
}
126
</script>
127
<body>
128
<form id="form1" runat="server">
129
<div>
130
<asp:Label ID="Label1" runat="server" Text="年级"></asp:Label>
131
<asp:DropDownList ID="ddlGrade" runat="server">
132
</asp:DropDownList>
133
<asp:Label ID="Label2" runat="server" Text="班级"></asp:Label>
134
<asp:DropDownList ID="ddlClass" runat="server">
135
</asp:DropDownList>
136
<asp:Label ID="Label3" runat="server" Text="姓名"></asp:Label>
137
<asp:DropDownList ID="ddlStudent" runat="server">
138
</asp:DropDownList></div>
139
</form>
140
</body>
141
</html>
142

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

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

后台代码:
1
using System;
2
using System.Data;
3
using System.Configuration;
4
using System.Collections;
5
using System.Web;
6
using System.Web.Security;
7
using System.Web.UI;
8
using System.Web.UI.WebControls;
9
using System.Web.UI.WebControls.WebParts;
10
using System.Web.UI.HtmlControls;
11
using System.Data.OracleClient;
12
13
public partial class selectStudent : System.Web.UI.Page
14
{
15
protected void Page_Load(object sender, EventArgs e)
16
{
17
if (!IsPostBack)
18
{
19
if (Request["gradenumber"] != null)
20
{
21
getgradenumber() ;
22
}
23
if (Request["classnumber"] != null)
24
{
25
getclassnumber();
26
}
27
else
28
{
29
loaddata();
30
}
31
}
32
}
33
34
private void loaddata()
35
{
36
dataBindGrade();
37
dataBindClass(Convert.ToInt32(this.ddlGrade.SelectedValue.ToString()));
38
dataBindStudent(Convert.ToInt32(this.ddlClass.SelectedValue.ToString()));
39
40
this.ddlGrade.Attributes["onchange"] = "loadclass()";
41
this.ddlClass.Attributes["onchange"] = "loadstudent()";
42
}
43
44
private void getgradenumber()
45
{
46
int gradenumber = Convert.ToInt32(Request["gradenumber"].ToString());
47
string str = "select *from SchoolClass where GradeNumber=" + gradenumber;
48
OracleConnection con=retuncon();
49
con.Open();
50
OracleDataAdapter oda = new OracleDataAdapter(str, con);
51
DataSet ds = new DataSet();
52
oda.Fill(ds);
53
DataTable dt = ds.Tables[0];
54
string returnstr = "";
55
56
foreach(DataRow dr in dt.Rows)
57
{
58
returnstr += "," + dr["ClassNumber"].ToString() + "|" + dr["ClassName"].ToString();
59
}
60
61
con.Close();
62
Response.Write(returnstr);
63
Response.Flush();
64
Response.End();
65
}
66
67
private void getclassnumber()
68
{
69
int classnumber = Convert.ToInt32(Request["classnumber"].ToString());
70
string str = "select *from SchoolStudent where classnumber=" + classnumber;
71
OracleConnection con = retuncon();
72
con.Open();
73
OracleDataAdapter oda = new OracleDataAdapter(str, con);
74
DataSet ds = new DataSet();
75
oda.Fill(ds);
76
77
DataTable dt = ds.Tables[0];
78
string returnstr = "";
79
80
foreach (DataRow dr in dt.Rows)
81
{
82
returnstr += "," + dr["StudentNumber"].ToString() + "|" + dr["StudentName"].ToString();
83
}
84
85
con.Close();
86
Response.Write(returnstr);
87
Response.Flush();
88
Response.End();
89
90
91
}
92
93
private void dataBindGrade()
94
{
95
OracleConnection con = retuncon();
96
con.Open();
97
OracleDataAdapter oda = new OracleDataAdapter("select *from SchoolGrade", con);
98
DataSet ds = new DataSet();
99
oda.Fill(ds);
100
this.ddlGrade.DataSource = ds;
101
this.ddlGrade.DataValueField = "GradeNumber";
102
this.ddlGrade.DataTextField = "GradeName";
103
this.ddlGrade.DataBind();
104
con.Close();
105
}
106
107
private void dataBindClass(int gradenumber)
108
{
109
OracleConnection con = retuncon();
110
con.Open();
111
OracleDataAdapter oda = new OracleDataAdapter("select *from SchoolClass where GradeNumber="+gradenumber, con);
112
DataSet ds = new DataSet();
113
oda.Fill(ds);
114
this.ddlClass.DataSource = ds;
115
this.ddlClass.DataValueField = "ClassNumber";
116
this.ddlClass.DataTextField = "ClassName";
117
this.ddlClass.DataBind();
118
con.Close();
119
}
120
121
private void dataBindStudent(int classnumber)
122
{
123
OracleConnection con = retuncon();
124
con.Open();
125
OracleDataAdapter oda = new OracleDataAdapter("select *from SchoolStudent where ClassNumber=" +classnumber, con);
126
DataSet ds = new DataSet();
127
oda.Fill(ds);
128
this.ddlStudent.DataSource = ds;
129
this.ddlStudent.DataValueField = "StudentNumber";
130
this.ddlStudent.DataTextField = "StudentName";
131
this.ddlStudent.DataBind();
132
con.Close();
133
}
134
135
136
public OracleConnection retuncon()
137
{
138
OracleConnection con = new OracleConnection("data source=wtszcc;User Id=wangtanps;Password=wtszcc");
139
return con;
140
}
141
}
142

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

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142
