首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

asp三级联动菜单有关问题

2012-04-01 
asp三级联动菜单问题VBScript code!--#include fileinc/config.asp--%call connectiondatabase(./

asp三级联动菜单问题

VBScript code
<!--#include file="inc/config.asp"--><%call connectiondatabase("./")%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>多级联动下拉菜单</title></head><!--'++++++++++++对数据库的注释区-lxq所写+++++++++++'products_class 表为一个记录地区的表'其中的字段分别的id(自动编号),title_cn(分类名称),fatherID(父类ID)'当fatherID为0的时候,则说明此地区为顶级类--><%sql = "select *  from products_class order by id desc"set rs=server.createobject("ADODB.Recordset")rs.open sql,conn,1,3%><script language = "JavaScript">var onecount1;onecount1=0;subcat1 = new Array();<%count = 0do while not rs.eof%>subcat1[<%=count%>] = new Array("<%= trim(rs("title_cn"))%>","<%= trim(rs("fatherID"))%>","<%= trim(rs("id"))%>");        <%count = count + 1        rs.movenext        loop        rs.close        set rs=nothing%>onecount1=<%=count%>;function change_one(addone)    {    document.all.etwo_id.length = 0;     var eone_id=eone_id;    var i;    document.all.etwo_id.options[0] = new Option('请选择','');    for (i=0;i < onecount1; i++)        {            if (subcat1[i][1] == addone)            {                 document.all.etwo_id.options[document.all.etwo_id.length] = new Option(subcat1[i][0], subcat1[i][2]);            }                }            }</script><body><table width="500" border="0" cellspacing="5" cellpadding="0">  <tr>    <td width="373"><select name="eone_id" onChange="change_one(document.all.eone_id.options[document.all.eone_id.selectedIndex].value)"><option value="" selected>请选择</option>                    <%set rs=server.createobject("ADODB.Recordset")sql="select *  from products_class where fatherID=0 order by id asc "rs.open sql,conn,1,3if not rs.eof then do while not rs.eof%><option value="<%=rs("id")%>"  <%if eone_id=trim(rs("id")) then response.Write("selected='selected'") end if%> ><%=rs("title_cn")%></option><%rs.movenextloopend if%> </select>      <select name="etwo_id" id="etwo_id">      <option selected value="0">请选择</option>      </select>      </td>  </tr></table></body></html>


这是个2级联动,求高手帮忙改出三级联动,此代码完美运行

[解决办法]
给你现成的

<script language="JavaScript">
<!--
<%
'二级数据保存到数组
Dim count2,rsClass2,sqlClass2
set rsClass2=server.createobject("adodb.recordset")
sqlClass2="select * from venshop_nsort order by nsort_xu asc" 
rsClass2.open sqlClass2,conn,1,1
%>
var subval2 = new Array();
//数组结构:一级根值,二级根值,二级显示值
<%
count2 = 0
do while not rsClass2.eof
%>
subval2[<%=count2%>] = new Array('<%=rsClass2("sort_id")%>','<%=rsClass2("nsort_id")%>','<%=rsClass2("nsort_name")%>')
<%
count2 = count2 + 1
rsClass2.movenext
loop
rsClass2.close
%>

<%
'三级数据保存到数组
Dim count3,rsClass3,sqlClass3
set rsClass3=server.createobject("adodb.recordset")
sqlClass3="select * from venshop_nnsort order by nnsort_xu asc" 


rsClass3.open sqlClass3,conn,1,1
%>
var subval3 = new Array();
//数组结构:二级根值,三级根值,三级显示值
<%
count3 = 0
do while not rsClass3.eof
%>
subval3[<%=count3%>] = new Array('<%=rsClass3("nsort_id")%>','<%=rsClass3("nnsort_id")%>','<%=rsClass3("nnsort_name")%>')
<%
count3 = count3 + 1
rsClass3.movenext
loop
rsClass3.close
%>

function changeselect1(locationid)
{
document.form1.s2.length = 0;
document.form1.s2.options[0] = new Option('==请选择类别==','');
document.form1.s3.length = 0;
document.form1.s3.options[0] = new Option('==请选择子类==','');
for (i=0; i<subval2.length; i++)
{
if (subval2[i][0] == locationid)
{document.form1.s2.options[document.form1.s2.length] = new Option(subval2[i][2],subval2[i][1]);}
}
}

function changeselect2(locationid)
{
document.form1.s3.length = 0;
document.form1.s3.options[0] = new Option('==请选择类别==','');
for (i=0; i<subval3.length; i++)
{
if (subval3[i][0] == locationid)
{document.form1.s3.options[document.form1.s3.length] = new Option(subval3[i][2],subval3[i][1]);}
}
}
//-->
</script>

<form name="form1" method="post" action="test1.asp">

三级联动:
<%
Dim count1,rsClass1,sqlClass1
set rsClass1=server.createobject("adodb.recordset")
sqlClass1="select * from a" 
rsClass1.open sqlClass1,conn,1,1
%>
<select name="s1" onChange="changeselect1(this.value)">
<option>==请选择频道==</option>
<%
count1 = 0
do while not rsClass1.eof
response.write"<option value="&rsClass1("ID")&">"&rsClass1("Name")&"</option>"
count1 = count1 + 1
rsClass1.movenext
loop
rsClass1.close
%>
</select>

<select name="s2" onChange="changeselect2(this.value)"> 
<option>==请选择类别==</option>
</select>

<select name="s3"> 
<option>==请选择专题==</option>
</select>

<!-- 此处只提供三级的联动代码,如果需要N级联动可以直接在后面添加 -->

这个可以N级联动的

你把里面的数据库表换成你的 注意二级表中要有一级的ID之类的 以此类推

希望楼主搞定~

热点排行