读书人

急三级联动下拉选择框

发布时间: 2012-04-04 16:38:51 作者: rapoo

急求一个三级联动下拉选择框,在线等。
我现在有一个表A,里面的字段和值如下:
ID parentID name
10 1 text1
11 10 text2
13 10 text3
14 1 text4
15 14 text5
16 14 text6
17 16 text7
18 16 text8
我要查询这个表,得到一个三级联动下拉选择框。
第一级是查询parentID=1得到的
第二级是选择第一级后,再查询parentID=(第一级ID)
第三级是选择第二级后的查找值。

请问这种方式,怎样用代码来实现。在线等,谢谢!!

[解决办法]
<script language = "JavaScript ">
var onecount;
onecount=0;
sub2 = new Array();
sub2[0] = new Array( '1 ', '1 ', 'a1 ');
sub2[1] = new Array( '2 ', '1 ', 'a2 ');
sub2[2] = new Array( '3 ', '1 ', 'a3 ');
sub2[3] = new Array( '4 ', '2 ', 'b1 ');
sub2[4] = new Array( '5 ', '2 ', 'b2 ');
sub2[5] = new Array( '6 ', '3 ', 'c1 ');
sub2[6] = new Array( '7 ', '3 ', 'c2 ');

onecount=7;

sub3 = new Array();
sub3[0] = new Array( '1 ', '1 ', '#1 ');
sub3[1] = new Array( '2 ', '2 ', '#2 ');
sub3[2] = new Array( '3 ', '3 ', '#3 ');
sub3[3] = new Array( '1 ', '4 ', '#4 ');
sub3[4] = new Array( '2 ', '5 ', '#5 ');
sub3[5] = new Array( '1 ', '6 ', '#6 ');
sub3[6] = new Array( '2 ', '7 ', '#7 ');

twocount=7;

function changeone(locationid)
{
document.all.s2.length = 0;
var locationid=locationid;
var i;
for (i=0;i < onecount; i++){
if (locationid== "* "){
document.all.s2.options[document.all.s2.length] = new Option(sub2[i][2], sub2[i][0]);
}
else{
if (sub2[i][1] == locationid){
document.all.s2.options[document.all.s2.length] = new Option(sub2[i][2], sub2[i][0]);
}
}
}
changetwo(document.all.s2.options[0].value)
}
function changetwo(locationid)
{
document.all.s3.length = 0;
var locationid=locationid;
var i;
for (i=0;i < twocount; i++){
if (locationid== "* "){
document.all.s3.options[document.all.s3.length] = new Option(sub3[i][2], sub3[i][0]);
}
else{
if (sub3[i][1] == locationid){
document.all.s3.options[document.all.s3.length] = new Option(sub3[i][2], sub3[i][0]);
}
}
}
}
</script>
</head>

<body onload= "changeone( '1 ') ">
<select name= "s1 " size= "1 " id= "s1 " onChange= "changeone(this.value) ">


<option value= "1 " selected> 1 </option>
<option value= "2 "> 2 </option>
<option value= "3 "> 3 </option>
</select>
<select name= "s2 " size= "1 " id= "s2 " onChange= "changetwo(this.value) ">
</select>
<select name= "s3 " size= "1 " id= "s3 ">
</select>


[解决办法]
自己看吧,
http://blog.csdn.net/btbtd/archive/2006/12/29/1468163.aspx
你可以做NN级, 而且重用只需要小小修改一个设置就可...
内容用 rs.GetString() 读取
表用视图取行数据...
[解决办法]
偶以前发过一个动态查询数据库的三级联动。


<script language= "javascript ">
function getdzcs(qdcs){
var doc= 'index.asp?action=getdzcs&qdcs= '+qdcs;
document.all.DownLoad1.startDownload(doc,show_dzcs)
}
function show_dzcs(s){
dzcsspan.innerHTML=s;
}

function getcclb(dzcs){
var doc= 'index.asp?action=getlb&qdcs= '+qdcshh.value+ '&dzcs= '+dzcs;
document.all.DownLoad2.startDownload(doc,show_cclb)
}
function show_cclb(s){
cclbspan.innerHTML=s;
}
</script>
<%
strConn = "Driver={Microsoft Access Driver (*.mdb)};DBQ= " & Server.MapPath( "aa.mdb ")
Set conn = Server.CreateObject( "ADODB.Connection ")
conn.open strConn

action=request( "action ")
Select Case action
Case "getdzcs " call dzcs
Case "getlb " call cclb
end Select

response.write " <table width= '750 '> <tr> <td width= '250 '> 起点城市: <select id= 'qdcs ' name= 'qdcs ' onchange= " "getdzcs(this.value) " "> "
'查询起点城市,生成页面
'-------------------------
sql= "SELECT qdcs FROM aaa "
set rs=server.CreateObject( "adodb.recordset ")
qdcsdoc= " "
rs.open sql,conn
do while not rs.eof
if qdcsdoc= " " then
qdcsdoc=rs( "qdcs ")
else
if UBound(Split(qdcsdoc,rs( "qdcs "))) <> 1 then qdcsdoc=qdcsdoc& "| "&rs( "qdcs ")
end if
rs.movenext
loop
rs.Close
set rs=nothing
qdcs=split(qdcsdoc, "| ")
for ii=0 to ubound(qdcs)
%>
<option value= " <%=qdcs(ii)%> "> <%=qdcs(ii)%> </option>
<%
next
'==============================================================起点城市列表结束
%>
</select> </td>

<td width= '250 '> <div name= 'DownLoad1 ' id= 'DownLoad1 ' style= "behavior:url(#default#download); "> <span name= "dzcsspan " id= "dzcsspan "> 到站城市: <select name= 'dzcs ' id= 'dzcs '> </select> </span> <div> </td>

<td width= '250 '> <div name= 'DownLoad2 ' id= 'DownLoad2 ' style= "behavior:url(#default#download); "> <span name= "cclbspan " id= "cclbspan "> 所有车次: <select name= 'cclb ' id= 'cclb '> </select> </span> <div> </td>

</tr> </table>

<%
'列出符合起点城市的所有到站,到站国家+到站城市,生成到站城市下拉
sub dzcs()
qdcs=request( "qdcs ")

%>
<input name= "qdcshh " id= "qdcshh " type= "hidden " value= " <%=qdcs%> ">


到站城市: <select name= 'dzcs ' id= 'dzcs ' onchange= "getcclb(this.value) ">
<%
sql= "SELECT zdgj,zdcs FROM aaa where qdcs= ' "&qdcs& " ' "
'response.write sql
'response.end
set rs=server.CreateObject( "adodb.recordset ")
dzcsdoc= " "
rs.open sql,conn
do while not rs.eof
gjcs=rs( "zdgj ")& "- "&rs( "zdcs ")
if dzcsdoc= " " then
dzcsdoc=gjcs
else
if UBound(Split(dzcsdoc,gjcs)) <> 1 then dzcsdoc=dzcsdoc& "| "&gjcs
end if
rs.movenext
loop
rs.Close
set rs=nothing
dzcslb=split(dzcsdoc, "| ")
for ii=0 to ubound(dzcslb)
%>
<option value= " <%=dzcslb(ii)%> "> <%=dzcslb(ii)%> </option>
<%
next
%>
</select>
<%
response.end
end sub


'根据已选参数生成车次列表
sub cclb()
qdcs=request( "qdcs ")
dzcsaa=request( "dzcs ")
dzcslb=Split(dzcsaa, "- ")
%>
所有车次: <select name= 'cclb ' id= 'cclb '>
<%
sql= "SELECT id,cc FROM aaa where qdcs= ' "&qdcs& " ' and zdgj= ' "&dzcslb(0)& " ' and zdcs= ' "&dzcslb(1)& " ' "
set rs=server.CreateObject( "adodb.recordset ")
rs.open sql,conn
do while not rs.eof
%>
<option value= " <%=rs( "id ")%> "> <%=rs( "cc ")%> </option>
<%
rs.movenext
loop
rs.Close
set rs=nothing
%>
</select>
<%
response.end
end sub
%>


数据表

aaa
id qdcs zdgj zdcs cc
1 北京 俄罗斯 A K001
2 北京 俄罗斯 B K002
3 北京 俄罗斯 C K003
4 北京 俄罗斯 D K004
5 北京 俄罗斯 E K005
6 北京 蒙古 A K006
7 北京 蒙古 D K007
8 北京 乌克兰 A K008
9 北京 乌克兰 B K009
10 北京 乌克兰 C K010
11 北京 白俄罗斯 A K011
12 北京 白俄罗斯 B K012
13 北京 白俄罗斯 C K013
14 乌鲁木齐 俄罗斯 A K014
15 乌鲁木齐 俄罗斯 D K015
16 乌鲁木齐 俄罗斯 F K016
17 乌鲁木齐 蒙古 A K017
18 乌鲁木齐 蒙古 B K018
19 乌鲁木齐 蒙古 C K019
20 乌鲁木齐 蒙古 D K020
21 乌鲁木齐 蒙古 E K021
22 乌鲁木齐 白俄罗斯 A K022


读书人网 >ASP

热点推荐