从数据中动态读态读出省,及省所对就城市,两个下拉菜单内容的一种解决办法:大家看看!

我想了,写了省市动态联动变化的一个例子(两个下拉列框),大家看看有什么不足的地方。(其实这个应用还是很多的,比如说在先了对应的科室之后,动态从数库中读出此科室对应的人员名单,这一点是很实用的。)

文件为:

province.asp
city.mdb
city.mdb的结构为:
province表:
province(省份)
provinceid(省份代号)
city表:
city(城市)
cityid(城市代号)
provinceid(对应省份代号)
如:湖北,1; || 武汉,1001,1。

有下载地址:http://www.great-tax.com/province.rar

 1<html>
 2<head>
 3<title>省市联动变化级选菜单</title>
 4<style css="text/type">   
 5<!--   
 6  
 7body {font-size:9pt}   
 8\-->   
 9</style>
10</head>   

set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)}; dbq="&amp; server.mappath("city.mdb")
set rs=server.createobject("adodb.recordset")
strsql="select * from province"
rs.open strsql,conn,1,1
' response.end
dim province(5,1)
count1=rs.recordcount
i1=0
if not rs.eof then
do while not rs.eof
province(i1,0)=rs("provinceid")
province(i1,1)=rs("province")
i1=i1+1
rs.movenext
loop
end if
rs.close
set rs=nothing

set rn=server.createobject("adodb.recordset")
strsql="select * from city "
rn.open strsql,conn,1,1
dim city(10,2)
count2=rn.recordcount
i2=0
if not rn.eof then
do while not rn.eof
city(i2,0)=rn("cityid")
city(i2,1)=rn("city")
city(i2,2)=rn("provinceid")
i2=i2+1
rn.movenext
loop
end if

' response.end

rn.close
set rn=nothing

1  
2<script language="javascript">   
3function InitBigClass()   
4{   
5province = new Array();   
6  
7  

for i=0 to count1-1

 1province[```
 2=i
 3```]=new Array();   
 4province[```
 5=i
 6```][0]="```
 7=province(i,0)
 8```"   
 9province[```
10=i
11```][1]="```
12=province(i,1)
13```"   

next

1}   
2function InitsmallClass()   
3{   
4city = new Array();   

for i=0 to count2-1

 1city[```
 2=i
 3```]=new Array();   
 4city[```
 5=i
 6```][0]="```
 7=city(i,0)
 8```"   
 9city[```
10=i
11```][1]="```
12=city(i,1)
13```"   
14city[```
15=i
16```][2]="```
17=city(i,2)
18```"   

next

 1}   
 2  
 3InitBigClass()   
 4InitsmallClass()   
 5  
 6function changeprovince(myfrm)   
 7{   
 8  
 9var selectedprovinceid,i,j;   
10for(i=myfrm.cityid.options.length-1;i>=0;--i)   
11{   
12myfrm.cityid.options[i]=null; //清空改变之前的省所对应的城市   
13}   
14selectedprovinceid=myfrm.provinceid.options[myfrm.provinceid.selectedIndex].value; //获取改变后的省份对应选项值   
15j=0;   
16for(i=0;i<city.length;i++)   
17{   
18if(selectedprovinceid==city[i][2])   
19{   
20  
21myfrm.cityid.options[j]=new Option(city[i][1],city[i][1]);   
22++j;   
23}   
24}   
25}   
26function addcity(myfrm)   
27{   
28var selectedprovinceid,i,j;   
29selectedprovinceid=myfrm.provinceid.options[myfrm.provinceid.selectedIndex].value;   
30j=0;   
31for(i=0;i<city.length;i++)   
32{   
33if(selectedprovinceid==city[i][2])   
34{   
35myfrm.cityid.options[j]=new Option(city[i][1],city[0][1]);   
36++j;   
37}   
38}   
39}   
40  
41  
42</script>
43<body>
44<form method=" POST" name="myform">   

set rs=server.createobject("adodb.recordset")
strsql="select * from province"
rs.open strsql,conn,1,1

1<p>选择省:<select id="provinceid" name="provinceid" onchange="javascript:changeprovince(document.myform);" size="1">   

if not rs.eof then

1<option ```"="" provinceid")="" selected="" value="```
2=rs(">```
3=rs("province")
4```</option> //设默认值为湖北   

do while not rs.eof

1<option =rs("provinceid")="" ```="" value="```">```
2=rs("province")
3```</option>   

rs.movenext
loop
end if

1  
2</select>  </p>
3<p>选择市:<select id="cityid" name="cityid" size="1">
4</select> </p>
5<p>  <input name="B1" type="submit" value="提交"/></p>
6<p> </p>   

conn.close
set conn=nothing

1  
2</form>
3</body>
4</html>

有下载地址:http://www.great-tax.com/province.rar

---------------------------------------------------------------

呵呵,不错,不过抄csdn也不用抄的那么象嘛。连InitBigClass()、InitsmallClass()这样的函数名都一字不拉的抄过来了。定义数组也不一定要象csdn那么麻烦的。
---------------------------------------------------------------

既然结果集已经转数组了为什么后面生成select的时候还要再select * from province一回呢?
---------------------------------------------------------------

http://expert.csdn.net/Expert/topic/723/723099.xml?temp=.7060816
第一个方法就是为数据库设计的
---------------------------------------------------------------

能这么将asp内嵌到javascript中么?jsp能不能内嵌到javascript中?
---------------------------------------------------------------

呵呵,我什么时候也成高手啦?

asp、jsp都不能在客户端被javascript调用,不过他们都可以用来生成HTML页面的任何部分,包括javascript代码啊。

上面嵌入的代码:
-------------------------------------------
function InitBigClass()
{
province = new Array();

1 for i=0 to count1-1

province[``` =i

 1province[```
 2=i
 3```][0]="```
 4=province(i,0)
 5```"   
 6province[```
 7=i
 8```][1]="```
 9=province(i,1)
10```"   

next

 1}   
 2\-------------------------------------------   
 3就是用来循环生成   
 4\---------------------------------------------   
 5function InitBigClass()   
 6{   
 7province = new Array();   
 8province[1]=new Array();   
 9province[1][0]="```
10=province(i,0)
11```"   
12province[1][1]="```
13=province(i,1)
14```"   
15  
16province[2]=new Array();   
17province[2][0]="```
18=province(i,0)
19```"   
20province[2][1]="```
21=province(i,1)
22```"   
23.   
24.   
25.   
26}   
27\---------------------------------------------   
28\---------------------------------------------------------------   
29  
30做WEB的最好把ASP和HTML分开,最好在ASP里不要见到rs等等的东西,否则会痛苦不堪。
Published At
Categories with Web编程
comments powered by Disqus