<!--#include file="conn.asp"-->
<%
mysql="select * from city order by city_name asc "'这是二级菜单的数据来源
set rsh2 =server.createobject("ADODB.Recordset")
rsh2.open mysql,conn,1,2
rsh2.movefirst
m=0
x=0
%>
<script language="javascript">
subcat = new Array()//建立一个数组
<%
while not rsh2.eof
name1="'"&rsh2("city_sheng")&"'"//相关联的值
name2="'"&rsh2("city_name")&"'"
//取得第二级显示内容和菜单的值
%>
subcat[<%=m%>] = new Array(<%=name2%>,<%=name1%>,<%=name2%>)
//第一个元素标识一级,第二个元素是显示的内容,每三个为这个元素的值相当于value
<%
rsh2.movenext
m=m+1
x=x+1//计算选项元素的个数
wend
%>
var onecount
onecount=0
onecount=<%=x%>
function changelocation(locationid)
//这个函数是用来根据第一个下拉菜单来改变第二个下拉菜单的显示,locationid是一级下拉菜单的value值
{
document.myform.Nclassid.length = 0
//Nclassid为第二级下拉菜单的name,此句将第二级下拉菜单的长度清零,即当没有任何选择的时候,显示为空
var locationid=locationid//取得第一个下拉菜单的值
var i
for (i=0i <onecounti++)
{
if (subcat[i][1] == locationid)
//当二个下拉菜单的值等于第一个下拉菜单的关联值时,即建立option对象,生成第二级下拉菜单项
{
document.myform.Nclassid.options[document.myform.Nclassid.length] = new Option(subcat[i][0], subcat[i][2])
//当第二级菜单生成一个下拉项时,document.myform.Nclassid.length的值会自动增加,即会自动生成一个下拉菜单项,subcat[i][0]为option中的value,subcat[i][2]为option显示的值,在这里,这两个值是相同的
}
}
}
</script>
<form name="myform">
<tr>
<td><select name="classid" onChange="changelocation(document.myform.classid.options[document.myform.classid.selectedIndex].value)">
<%
'onChange是一个会根据内容改变而触发的事件,当select下拉菜单的内容改变了,就会执行changelocation()这个函数
'以下是通过数据库来取得第一个下拉菜单的显示内容和值
response.write"<option >请选择</option>"
set rs=server.createobject("adodb.recordset")
sql="select * from sheng order by sheng_id"
rs.open sql,conn,3,1
rs.movefirst
while not rs.eof
response.write "<option value="&rs("sheng")&">"&rs("sheng")&"</option>"
rs.movenext
wend
set rs=nothing
%>
</select></td>
<td width="31">市:</td><td width="55">
<select name="Nclassid">
</select></td></tr></form>
文件conn.asp 代码如下(也可以直接写到select.asp开头):
<%
set conn=server.createobject("adodb.connection")
dbpath=server.mappath("data.mdb")
connstr="Provider=Microsoft.Jet.OLEDB.4.0Data Source=" &dbpath
conn.open connstr
%>
数据库:
表city:
表sheng:
说明:
'一个数据库中有两个表,一个是sheng表,里面保存着省的资料,这个表有两个字段,一个是sheng_id,这个ID是自动生成的,
'一个是sheng,是用来保存省份的名称.两个字段都为字符型,另外一个表是city里面保存着城市的资料,这个表有三个字段,
'一个是city_id,这个ID也是自动生成的,一个是city_name,是用来保存城市的名称的,一个是city_sheng,是用来这个城市所在的省
'这个字段也是让关联菜单能够关联起来的一个字段
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)