关于ASP列表菜单关联的问题?
我弄两个关联的列表菜单,第一个列表的内容是大类,大类的数据是数据里面读取出来,第二个列表的数据是根据第一个列表的值再决定从数据库里面去读取数据,比如,第一个列表里选择省份...
我弄两个关联的列表菜单,第一个列表的内容是大类,大类的数据是数据里面读取出来,第二个列表的数据是根据第一个列表的值再决定从数据库里面去读取数据,比如,第一个列表里选择省份是广东时,第二个列表里便在数据库里找到广东的所有小类,具体怎么做?实在是头痛啊,JAVASCRIPT我不熟,希望高手能指点一下
QQ:88235786 展开
QQ:88235786 展开
6个回答
展开全部
下面是转的别人的文章 ,希望对你有用。
另外这个网站上个比较好的学习网站
http://webasp.net
就拿最常用的“省市下拉列表联动”作为例子吧!
在我们制作网站会员注册信息时,一般会涉及到填写自己所在省/市,如果用input或textarea做成填写形式不太理想。所以大部分网站都会选择联动下来列表形式,做起来也不算很复杂,同时看上去也很轻松。
具体做法如下:
1.设计数据库
我们选用Access数据库。首先,新建名为database1.mdb的Access数据库
在database1.mdb数据库中建立两个表分别为province、city。具体字段设计如下:
Province(省)
具体字段:id—自动编号 ProvinceName—省名 ProvinceNo—省名编号 ProvinceOrder—省排序编号
省 id ProvinceName ProvinceNo ProvinceOrder
1 北京市 0 0
2 安徽省 1 1
3 山东省 2 2
4 江苏省 3 3
以下省名略。
设计思想:id是表的自动编号,ProvinceName和ProvinceNo是必须的,前者是用来存储省名,后者则是联系表city必不可少的字段。至于ProvinceOrder则是用来给省名排序的,控制下拉列表中省名出现的位置,可以省略。
City(城市)
具体字段:id—自动编号 CityName—市名 CityNo—市名编号 CityOrder—市排序编号 ProvinceID—所在省编号
市 id
CityName
CityNo
CityOrder
ProvinceID
1
北京市
1
1
0
2
合肥市
2
2
1
3
芜湖市
3
3
1
4
安庆市
4
4
1
5 济南市
5
5
2
6 青岛市
6
6
2
以下市名略。
设计思想:前面四项同Province表设计思想,ProvinceID字段将Province表和City表联系起来。
2.设计样式及编码
二级联动的样式很简单,在DreamWeaver 2004里向设计页面上放置两个select下拉菜单,分别取名为Province_select、City_select,它们都在名为form1的表单里。
编码需要用到html、vbscript及javascript。首先是连接数据库,我们用常用的<!--#include file="conn.asp"-->连接。conn.asp中代码略。
其次,用Javascript和Vbscript将Province和City表中的数据读出来并使Province_select和City_select联系起来,这一步是整个程序的关键所在。
代码如下:
<script language=JavaScript>
<%
dim sql,i,j
'//////////////////////////读出 Province 表//////////////////////////
set rs_Province=server.createobject("adodb.recordset")
sql="select * from Province order by ProvinceOrder"
rs_Province.open sql,conn,1,1
%>
var selects=[];
selects['xxx']=new Array(new Option('请选择城市……','xxx'));
<%
for i=1 to rs_s.recordcount
%>
selects['<%=rs_Province("ProvinceNo")%>']=new Array(
<%
'//////////////////////////读出 City 表//////////////////////////
set rs_City=server.createobject("adodb.recordset")
sql="select * from City where ProvinceID="&rs_Province("id")&" order by ProvinceOrder"
rs_City.open sql,conn,1,1
if rs_City.recordcount>0 then
for j=1 to rs_City.recordcount
if j=rs_City.recordcount then
%>
new Option('<%=trim(rs_City("CityName"))%>','<%=trim(rs_City("CityNo"))%>'));
<%else%>
new Option('<%=trim(rs_City("Cityname"))%>','<%=trim(rs_City("CityNo"))%>'),
<%
end if
rs_City.movenext
next
else
%>
new Option('','0'));
<%
end if
rs_City.close
set rs_City=nothing
rs_Province.movenext
next
rs_Province.close
set rs_Province=nothing
%>
<!--//////////JavaScript控制联动///////////-->
function chsel(){
with (document.form1){
if(province_select.value) {
city_select.options.length=0;
for(var i=0;i<selects[province_select.value].length;i++){
city_select.add(selects[province_select.value][i]);
}
}
}
}
</script>
最后,结合html,Javascript和Vbscript实现联动效果。代码如下:
<!--//////////////////////////Province_select下拉列表//////////////////////////-->
<select name="Province_select" onChange=chsel()>
<option value="xxx" selected>请选择省份……</option>
<%
dim tmpid '定义一个临时变量用来记住省id
tmpid=0
set rs_Province=server.CreateObject("ADODB.recordset")
sql="select * from Province order by ProvinceOrder"
rs_Province.open sql,conn,1,1
while not rs_Province.eof
tmpid=rs_Province("id")
%>
<option value="<%=rs_Province("ProvinceNo")%>" ><%=trim(rs_Province("ProvinceName"))%></option>
<%
rs_Province.movenext
wend
rs_Province.close
set rs_Province=nothing
%>
</select>
<!--//////////////////////////City_select下拉列表//////////////////////////-->
<select name="City_select">
<%
set rs_City=server.createobject("adodb.recordset")
sql="select * from City where ProvinceID="&tmpid&" order by CityOrder"
rs_City.open sql,conn,1,1
while not rs_City.eof
%>
<option value="<%=rs_City("CityNo")%>"><%=trim(rs_City("CityName"))%></option>
<%
rs_City.movenext
wend
rs_City.close
set rs_City=nothing
%>
</select>
另外这个网站上个比较好的学习网站
http://webasp.net
就拿最常用的“省市下拉列表联动”作为例子吧!
在我们制作网站会员注册信息时,一般会涉及到填写自己所在省/市,如果用input或textarea做成填写形式不太理想。所以大部分网站都会选择联动下来列表形式,做起来也不算很复杂,同时看上去也很轻松。
具体做法如下:
1.设计数据库
我们选用Access数据库。首先,新建名为database1.mdb的Access数据库
在database1.mdb数据库中建立两个表分别为province、city。具体字段设计如下:
Province(省)
具体字段:id—自动编号 ProvinceName—省名 ProvinceNo—省名编号 ProvinceOrder—省排序编号
省 id ProvinceName ProvinceNo ProvinceOrder
1 北京市 0 0
2 安徽省 1 1
3 山东省 2 2
4 江苏省 3 3
以下省名略。
设计思想:id是表的自动编号,ProvinceName和ProvinceNo是必须的,前者是用来存储省名,后者则是联系表city必不可少的字段。至于ProvinceOrder则是用来给省名排序的,控制下拉列表中省名出现的位置,可以省略。
City(城市)
具体字段:id—自动编号 CityName—市名 CityNo—市名编号 CityOrder—市排序编号 ProvinceID—所在省编号
市 id
CityName
CityNo
CityOrder
ProvinceID
1
北京市
1
1
0
2
合肥市
2
2
1
3
芜湖市
3
3
1
4
安庆市
4
4
1
5 济南市
5
5
2
6 青岛市
6
6
2
以下市名略。
设计思想:前面四项同Province表设计思想,ProvinceID字段将Province表和City表联系起来。
2.设计样式及编码
二级联动的样式很简单,在DreamWeaver 2004里向设计页面上放置两个select下拉菜单,分别取名为Province_select、City_select,它们都在名为form1的表单里。
编码需要用到html、vbscript及javascript。首先是连接数据库,我们用常用的<!--#include file="conn.asp"-->连接。conn.asp中代码略。
其次,用Javascript和Vbscript将Province和City表中的数据读出来并使Province_select和City_select联系起来,这一步是整个程序的关键所在。
代码如下:
<script language=JavaScript>
<%
dim sql,i,j
'//////////////////////////读出 Province 表//////////////////////////
set rs_Province=server.createobject("adodb.recordset")
sql="select * from Province order by ProvinceOrder"
rs_Province.open sql,conn,1,1
%>
var selects=[];
selects['xxx']=new Array(new Option('请选择城市……','xxx'));
<%
for i=1 to rs_s.recordcount
%>
selects['<%=rs_Province("ProvinceNo")%>']=new Array(
<%
'//////////////////////////读出 City 表//////////////////////////
set rs_City=server.createobject("adodb.recordset")
sql="select * from City where ProvinceID="&rs_Province("id")&" order by ProvinceOrder"
rs_City.open sql,conn,1,1
if rs_City.recordcount>0 then
for j=1 to rs_City.recordcount
if j=rs_City.recordcount then
%>
new Option('<%=trim(rs_City("CityName"))%>','<%=trim(rs_City("CityNo"))%>'));
<%else%>
new Option('<%=trim(rs_City("Cityname"))%>','<%=trim(rs_City("CityNo"))%>'),
<%
end if
rs_City.movenext
next
else
%>
new Option('','0'));
<%
end if
rs_City.close
set rs_City=nothing
rs_Province.movenext
next
rs_Province.close
set rs_Province=nothing
%>
<!--//////////JavaScript控制联动///////////-->
function chsel(){
with (document.form1){
if(province_select.value) {
city_select.options.length=0;
for(var i=0;i<selects[province_select.value].length;i++){
city_select.add(selects[province_select.value][i]);
}
}
}
}
</script>
最后,结合html,Javascript和Vbscript实现联动效果。代码如下:
<!--//////////////////////////Province_select下拉列表//////////////////////////-->
<select name="Province_select" onChange=chsel()>
<option value="xxx" selected>请选择省份……</option>
<%
dim tmpid '定义一个临时变量用来记住省id
tmpid=0
set rs_Province=server.CreateObject("ADODB.recordset")
sql="select * from Province order by ProvinceOrder"
rs_Province.open sql,conn,1,1
while not rs_Province.eof
tmpid=rs_Province("id")
%>
<option value="<%=rs_Province("ProvinceNo")%>" ><%=trim(rs_Province("ProvinceName"))%></option>
<%
rs_Province.movenext
wend
rs_Province.close
set rs_Province=nothing
%>
</select>
<!--//////////////////////////City_select下拉列表//////////////////////////-->
<select name="City_select">
<%
set rs_City=server.createobject("adodb.recordset")
sql="select * from City where ProvinceID="&tmpid&" order by CityOrder"
rs_City.open sql,conn,1,1
while not rs_City.eof
%>
<option value="<%=rs_City("CityNo")%>"><%=trim(rs_City("CityName"))%></option>
<%
rs_City.movenext
wend
rs_City.close
set rs_City=nothing
%>
</select>
参考资料: http://webasp.net/article/26/25645.htm
展开全部
你哪个 纯asp 也能做! 你用3成架够就是说 比如说 广东省 广东市 什么县 最好不要超过3成!! 因为超拉别想打开网页 rs.open 广东省
rs1.open 广东市
rs2.open 什么县
rs2.closed
rs1.closed
rs.closed
3成架够 可以检索!!但是学代码时 段点必须设好.要不你就惨拉
rs1.open 广东市
rs2.open 什么县
rs2.closed
rs1.closed
rs.closed
3成架够 可以检索!!但是学代码时 段点必须设好.要不你就惨拉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
大类好办.
小类是用浮动框架IFRAME搞上去的.
小类是用浮动框架IFRAME搞上去的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
网上有的是,搜索一下。叫二级联动菜单。
如果是三级的就叫三级联动。
如果是三级的就叫三级联动。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
做一个函数来读取大类的值,根据返回值再用循环语句将小类输出。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用ajax可以做这个呀。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询