asp 2级联动菜单,动态获取2级下拉列表,2级列表来自两个表,求该,问起解决再加100分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp 2级联动菜单,动态获取2级下拉列表,2级列表来自两个表,求该,问起解决再加100分相关的知识,希望对你有一定的参考价值。

<script>

function changeselect1(province)


if (province==1)



<%
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * from Producedowntitle"
rs.OPEN sql,Conn,1,1
%>
var aaa;//定义aaa变量
aaa=0;//aaa赋0
bb = new Array();//创建bb动态数组
<%count = 0 '定义bb数组下标变量
do while not rs.eof%>//循环所有记录
bb[<%=count%>] = new Array("<%= trim(rs("pmodel"))%>",province,"<%= trim(rs("pid"))%>");//将(小类名,大类名,小类id)作为一个数据存入bb动态数组,bb变为一个二维数组
<%count = count + 1'下标变量递增
rs.movenext'移到下一条数据库记录
loop'循环
rs.close'关闭查询
set rs=nothing%>//释放变量
aaa=<%=count%>

else


<%
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * from producemodel"
rs.OPEN sql,Conn,1,1
%>
var aaa;//定义aaa变量
aaa=0;//aaa赋0
bb = new Array();//创建bb动态数组
<%count = 0 '定义bb数组下标变量
do while not rs.eof%>//循环所有记录
bb[<%=count%>] = new Array("<%= trim(rs("pmodel"))%>",province,"<%= trim(rs("pid"))%>");//将(小类名,大类名,小类id)作为一个数据存入bb动态数组,bb变为一个二维数组
<%count = count + 1'下标变量递增
rs.movenext'移到下一条数据库记录
loop'循环
rs.close'关闭查询
set rs=nothing%>//释放变量
aaa=<%=count%>




function changeselect1(province)//根据大类名改变小类下拉内容的函数


document.form1.city.length = 0; //清空小类下拉框内容
document.form1.city.disabled=false;//设置小类下拉框失效
var province=province;//这句个人认为没什么必要
var i;//定义循环用的下标变量
document.form1.city.options[0] = new Option('====行业名称====','');//给小类下拉框添加一个名称为“====行业名称====”的选项
for (i=0;i < aaa; i++)//开始循环

if (bb[i][1] == province)//根据大类名进行筛选

document.form1.city.options[document.form1.city.length] = new Option(bb[i][0], bb[i][0]);添加小类下拉框选项


if(document.form1.city.options.length==1)document.form1.city.disabled=true; //如果小类下拉框有选项,则恢复小类下拉框有效


</script>
<select name="province" id="province" onChange="changeselect1(document.news_add.province.options[document.news_add.province.selectedIndex].value)">

<option value="">====属于类别====</option>
<option value="1">=====文 件=====</option>
<option value="2">=====型 号=====</option>
</select>
<select name="city" class="buttonmain" id="city">
</select>
好吧, 我改的头大了,劳请各位 把我上面这些代码 改下。
<select name="province" id="province" onChange="changeselect1(document.news_add.province.options[document.news_add.province.selectedIndex].value)">

<option value="">====属于类别====</option>
<option value="1">=====文 件=====</option>
<option value="2">=====型 号=====</option>
</select>
<select name="city" class="buttonmain" id="city">
</select>
上面是一级菜单,
2级菜单 判断 1级菜单 选择的值 为1 时候

在2级菜单 调用
<%
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * from Producedowntitle"
rs.OPEN sql,Conn,1,1
%>
这个表的内容,为2的时候
调用
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * from producemodel"
rs.OPEN sql,Conn,1,1
这个表的内容,帮我弄个写好的 完整代码 我一共给300分 谢谢。。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>二级联动菜单</title>
<%
dim menu1list,menu2list

Set rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * from Producedowntitle"
rs.OPEN sql,Conn,1,1
for i=1 t rs.recordcount
menu1list="|" & rs(1)
rs.movenext
next
rs.close
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * from producemodel"
rs.OPEN sql,Conn,1,1
for i=1 t rs.recordcount
menu2list="|" & rs(1)
rs.movenext
next
rs.close
set rs=nothing
%>
</head>
<body onload="init()">
<form action="" method="post" name="creator" enctype="multipart/form-data">
<script language="javascript">
<!--
var where = new Array(2);
function comefrom(loca,locacity) this.loca = loca; this.locacity = locacity;
where[0]= new comefrom("====属于类别====","选择二级");
where[1] = new comefrom("=====文 件=====","<%=menu1list%>");
where[2] = new comefrom("=====型号=====","<%=menu2list%>");
function select()
with(document.creator.province) var loca2 = options[selectedIndex].value;
for(i = 0;i < where.length;i ++)
if (where[i].loca == loca2)
loca3 = (where[i].locacity).split("|");
for(j = 0;j < loca3.length;j++) with(document.creator.city) length = loca3.length; options[j].text = loca3[j]; options[j].value = loca3[j]; var loca4=options[selectedIndex].value;
break;

document.creator.newlocation.value=loca2+loca4;

function init()
with(document.creator.province)
length = where.length;
for(k=0;k<where.length;k++) options[k].text = where[k].loca; options[k].value = where[k].loca;
options[selectedIndex].text = where[0].loca; options[selectedIndex].value = where[0].loca;

with(document.creator.city)
loca3 = (where[0].locacity).split("|");
length = loca3.length;
for(l=0;l<length;l++) options[l].text = loca3[l]; options[l].value = loca3[l];
options[selectedIndex].text = loca3[0]; options[selectedIndex].value = loca3[0];

-->
</script>
一级 <select name="province" onChange = "select()"></select> 二级 <select name="city" onChange = "select()"></select>
显示 <input type=text name="newlocation" maxlength=12 size=12 style="font-weight: bold"> 
</form>
</font>
</body>
</html>

如果还不会百度hi我。
1 记得加上conn数据库代码
2 更改menu1list="|" & rs(1)和menu2list="|" & rs(1)为你想要的字段。追问

感谢回答,下周一我试试谁的可以,周一中午之前准时给分。辛苦啦,不可以继续提问大家,非常感谢

追答

恩 可以随时百度hi我

追问

还是有点问题,虽然能在2级菜单 提出 值
for i=1 to rs.recordcount
menu1list="|" & rs("pmodel")
rs.movenext
这里MENU1LIST 循环出来,在 2级菜单下 只有 一条数据,没有把所有数据掉出来供选择。
如 pmodel 指的是 一级中 型号的一种,在2级菜单中 只提取出 最后一条数据,而不是把数据列表成列出来。请大哥指点,

参考技术A 2个方式,第一种option循环读取2个表的数据,第二种比较复杂就是建立一个内存表,把2张表的数据读出来放到这一张内存表中,然后再循环读出这张内存表表追问

补充问题了,帮忙谢谢,一共给300分 解决了

参考技术B 代码,这么多,就是还是看不明白你的意思,是这个不能显示,还是其他,希望补充说明以下。还是你看不明白这些代码追问

补充问题了 帮忙谢谢 加分了

以上是关于asp 2级联动菜单,动态获取2级下拉列表,2级列表来自两个表,求该,问起解决再加100分的主要内容,如果未能解决你的问题,请参考以下文章

asp 下拉菜单的二级联动

下拉框两级联动

二级联动asp下拉式列表菜单

关于ligerUI下拉列表两级联动的问题

ajax_get/post_两级联动

C# 动态添加2级下拉菜单问题