以下是无限级联的,只有一个表
id和pid为int型,cityname为字符型,下面数据可以保存为文本文件导入数据库,
"id","cityname","pid"
1,"贵州",0
2,"河北",0
3,"贵州1",1
4,"贵州2",1
5,"河北1",2
6,"河北2",2
7,"贵州1-1",3
8,"贵州1-2",3
9,"贵州2-1",4
10,"贵州2-2",4
11,"河北1-1",5
12,"河北1-2",5
13,"河北2-1",6
14,"河北2-2",6
15,"贵州1-1-1",7
16,"贵州1-1-2",7
17,"贵州1-1-1-1",15
18,"贵州1-1-1-2",15
19,"贵州1-1-1-1-1",17
20,"贵州1-1-1-1-2",17
*****************************************************************
city.asp
*****************************************************************
<!--#include file="conn.asp"-->
<%set rs=server.createobject("adodb.recordset")
conn.open connstr
%>
<form name="form1">
省份<select name="sheng" οnchange="city_change(this.name,this.value)">
<%
sql="select * from city where pid=0"
rs.open sql,conn,1,1
do while not rs.eof
%>
<option value="<%=rs(0)%>"><%=trim(rs(1))%></option>
<%
rs.movenext
loop
%>
</select>
城市:<select name="city" οnchange="city_change(this.name,this.value)">
</select>
乡:<select name="xiang" οnchange="city_change(this.name,this.value)">
</select>
村:<select name="chun" οnchange="city_change(this.name,this.value)">
</select>
寨:
<select name="zhai" οnchange="city_change(this.name,this.value)">
</select>
门号:
<select name="cardNO">
</select>
</form>
<iframe src="about:blank" width=0 height=0 name="city_url"></iframe>
<script language=javascript>
function city_change(change_type,id)
{
if(change_type!="cardNO") //如果是最后一级则不在往下
{window.city_url.location.href="city_send.asp?change_type="+change_type+"&id="+id;
}
}
function city_dataset(change_type,city_data)
{
var city_id=form1.elements;
var select_city;
var f=0;
for(k=0;k<city_id.length;k++) //清除本级以下的数据
{
if(city_id[k].tagName=="SELECT" && f!=0)
{
city_id[k].options.length=0;
}
if(city_id[k].tagName=="SELECT" && city_id[k].name==change_type)
{
select_city=city_id[k+1];
f=1;
}
}
for(k=0;k<city_data.length;k++)
{
select_city.options.length=select_city.options.length+1;
select_city.options[select_city.options.length-1].value=city_data[k][0];
select_city.options[select_city.options.length-1].text=city_data[k][1];
}
if(select_city.options.length>0) //自动展开下级下下级数据
{
city_change(select_city.name,select_city.options[0].value);
}
}
city_change("sheng",form1.sheng.options[0].value);
</script>
<%
rs.close
conn.close
set rs=nothing
set conn=nothing
%>
city_send.asp
*************************************
<!--#include file="conn.asp"-->
<%
set rs=server.createobject("adodb.recordset")
change_type=trim(request.querystring("change_type"))
id=trim(request.querystring("id"))
%>
<script language=javascript>
var city_data=new Array();
<%
sql="select * from city where pid="&id
'response.write sql
rs.open sql,conn,1,1
city_count=0
do while not rs.eof
%>
city_data[<%=city_count%>]=new Array("<%=rs(0)%>","<%=rs(1)%>");<%rs.movenext
city_count=city_count+1
loop
rs.close
conn.close
set rs=nothing
set conn=nothing
%>
parent.city_dataset('<%=change_type%>',city_data);
</script>