多级关联菜单数据库版

本文介绍了一种基于ASP和Access数据库实现的多级联动菜单系统。该系统使用FrontPage进行开发,并通过读取数据库中的表结构来动态生成下拉菜单选项。文中详细展示了HTML、JavaScript及ASP代码片段,实现了学校、部门、年级和学生四级菜单的联动效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>多级关联菜单数据库版</title>
<!--
数据库:test.mdb
表:dbselect
表结构:id(自增) school(文本) department(文本) grade(文本) student(文本)
IE6,NS7,Mozilla下测试通过
-->
</head> 

<body>
<form name="frm">
<select name=school onchange="MulSelect(1)"></select>
<select name=department onchange="MulSelect(2)"></select>
<select name=grade onchange="MulSelect(3)"></select>
<select name=student></select>
</form>

<script>
// 四级联动
var arrSel
=["school","department","grade","student"]
arrData
=[];

// 从数据库中读出四级联动的数据, 保存到 arrData 数组中(二维数组)
<%
dim conn,rs
set conn = Server.CreateObject("ADODB.Connection")
conn.Open 
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("test.mdb"& ";Persist Security Info=False"
set rs=conn.execute("select * from dbselect")
do while not rs.eof
%
>

arrData[arrData.length]
=["<%=trim(rs("school"))%>","<%=trim(rs("department"))%>","<%=trim(rs("grade"))%>","<%=trim(rs("student"))%>"]

<%
rs.movenext
loop
rs.close:
set rs=nothing
conn.close:
set conn=nothing
%
>
</script>

<script>
// 下拉框选择变化时触发的函数,用于重新生成其下级下拉框
// num : 下拉框的级数, 1 表示最顶级
function MulSelect(num)
{
var i,j,arrTemp
=[];
// 取得表单当前触发的下拉框的父级下拉框的值, 存放于 arrTemp 数组中(即不需要改变的值)
for(i=0;i<num;i++)
{
arrTemp[i]
=eval("document.frm."+arrSel[i]).value
}
if(num<arrSel.length)
{
// 对于触发下拉框的下一级的下拉框
with(eval("document.frm."+arrSel[num]))
{
// 先清空内容
length
=0
// 对所有的记录遍历
for(i=0;i<arrData.length;i++)
{
var find
=false

// 如果父级下拉框的记录不是当前选中的值,则跳过
for(j=0;j<num;j++)
{
if(arrTemp[j]!=arrData[i][j])
{
break;
}
}
if(j!=num)
{
continue;
}
// 这里已经可以保证第 i 项记录的数据属于当前选项的子数据

// 检查循环过程中是否已经添加了该选项,如果已有了, 则 fine = true
for(m=0;m<options.length;m++)
{
if(options[m].text==arrData[i][num])
{
find
=true
}
}
// 若当前没有选项或者尚未添加该选项项,则添加之
if(length==0||!find)
{
options[options.length]
=new Option(arrData[i][num],arrData[i][num])
}
}

// 递归调用生成下一级菜单的内容
MulSelect((num
+1))
}
}
}

// 调用联动函数初始化下拉框
MulSelect(
0)
</script>

</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值