| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4724 人关注过本帖
标题:[求助]如何在动态生成的下拉菜单中通过onChange事件改变另一个下拉菜单列表 ...
取消只看楼主 加入收藏
mary5050
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-6-26
收藏
 问题点数:0 回复次数:5 
[求助]如何在动态生成的下拉菜单中通过onChange事件改变另一个下拉菜单列表值?


<%Sub ShowServer()
Set rs=server.createobject("ADODB.recordset")
sql="select distinct sever from Server "
rs.open sql,conn,1,1
If rs.eof And rs.bof Then
rs.close
Set rs=nothing
End If
text = "<Select name='server1' id='server1' onChange='ShowServer2()'><Option Value='0' selected>请选择服务区域</Option>"
do while not rs.eof
text = text+"<Option Value='"+trim(rs("sever"))+"'>"+trim(rs("sever"))+"</Option>"
rs.movenext
loop
text = text+"</Select>"
rs.close
Set rs=nothing
Response.write text
End Sub%>

<%Sub ShowServer2()
dim chose
chose = Trim(Request.form("Server1")) //本意是想取出Server1下拉菜单中所选中的值,不知道这方法可不可行,请高手指点
Set rs=server.createobject("ADODB.recordset")
sql="select * from Server where sever ='"+chose+"'" //根据取出的值从Server表中取出满足条件的记录
rs.open sql,conn,1,3
If rs.eof And rs.bof Then
rs.close
Set rs=nothing
End If
text = "<Select name='server2' id='server2'><Option Value='0' selected>请选择服务分区域</Option>"
do while not rs.eof
text = text+"<Option Value='"+trim(rs("name"))+"'>"+trim(rs("name"))+"</Option>"
rs.movenext
loop
text = text+"</Select>"
rs.close
Set rs=nothing
Response.write text
End Sub%>

以上是我写的代码,但在调用过程中好像没有根据server1中的onChange事件来调用ShowServer2()这个函数。我一直都没找到原因,我个人认为是红色部分出错,请高手指点。如有更简便的方法最好,方法不一定要按我的思路,只要能达到我要的效果,保证两个下拉菜单是动态生成的,就OK了。
注:其中server1为第一个动态生成下拉菜单,server2为第二个动态生成下拉菜单,目的是使server2的下拉列表值随着server1选中的值 的改变而改变。如server1选中的值为"电信一区"而server2的下拉列表值"长空 傲雪 清风 九天"。
以下是server表的部分数据。

server表:
id sever name ip
1 电信一区 长空 61.154.10.35:19778
2 电信二区 南林 61.154.10.32:19778
3 电信一区 傲雪 61.154.10.31:19778
4 电信三区 玄湖 61.154.10.33:19778
5 电信二区 东岳 61.154.10.34:19778
6 电信一区 清风 61.154.10.40:19778
7 电信一区 九天 61.154.10.36:19778
8 电信二区 无极 61.154.10.38:19778
9 电信三区 神地 61.154.10.39:19778
10 电信三区 灵山 61.154.10.37:19778
搜索更多相关主题的帖子: onChange 菜单 动态 列表 
2006-06-27 15:09
mary5050
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-6-26
收藏
得分:0 
你点一下在新窗口查看呀 不知道哪里错了 就这样了呀

2006-06-27 15:17
mary5050
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-6-26
收藏
得分:0 

我的本意就是想通过客户端从服务器端的数据库中导出数据,从而动态生成两个下拉菜单。可试过很多方法都没有用,楼上的哥哥你说服务器端代码用客户端ONCHANGE无法调用的,那你有没有更好的解决方法呢?


2006-06-27 15:59
mary5050
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-6-26
收藏
得分:0 
[CODE]

我换了另一个思路,就是在导出第一个下拉菜单 的时候,先根据第一个下拉菜单的值找出第二个下拉菜单的列表值以数组的形式存储起来,然后根据在客户端根据第一个下拉菜单 的值的改变从不同的数组中导出第二个下拉菜单的值,可是我在运行的时候为什么整个页面都是空白的。什么也没有呀,请高手指点。
以下是conn1.aspr代码,数据库还是之前的那个。

<%
dim conn
dim connstr
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/data.mdb")
conn.Open connstr
%>

<%
sub connclose()
conn.close
set conn=nothing
end sub
%>

<html>
<head>

<title>动态生成下拉菜单</title>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<script language=javascript>
subcat = new Array();

<%
dim rstmp,rstmp2,sql
Set rs1=Server.CreateObject("ADODB.recordset")
Set rs2=Server.CreateObject("ADODB.recordset")
sql="select distinct sever from server"

rs1.open sql,conn,1,1
j=1

do while not rs1.eof
sql="select * from server where sever=" & rs1("sever") & " order by id desc"
rs2.open sql,conn,1,1
do while not rs2.eof
%>
subcat[<%=j%>]=new Array("<%=rs1("name")%>","<%=rs2("name")%>");
<%j=j+1
rs2.movenext
loop
rs2.close
rs1.movenext
Loop
rs1.close
%>
var countj=<%=j-1%>;
function rewritelist(oid)
{ document.form1.server2.length=0;
document.form1.server2.options[document.form1.server2.length]=new Option("请选择","");
for(var i=1;i<=countj;i++)
if (subcat[i][0]==oid)
document.form1.server2.options[document.form1.server2.length] =
new Option(subcat[i][1],subcat[i][1]);
}

</script>

</head>
<body>
<table>
<form action="conn1.asp" name="form1" method="post" >

<tr class=backq>
<td align="right">请选择分区</td>
<td width="34%">
<select size="1" name="server1" onclick="rewritelist(this.options[this.selectedIndex].value)" >
<option>请选择分类</option>
<%
rs1.open "select distinct sever from server",conn,1,1
do while not rs1.eof
%>
<option value="<%=rs1("sever")%>"><%=rs1("sever")%></option>
<%
rs1.movenext
Loop
%>
</select></td>
<tr><td align="right">请选择小类</td>
<td>
<select name=server2>
<option selected>请选择小类</option>
</select>
</td>
</tr>

</form>
</table>
</body>
</html>

[/CODE]

2006-06-28 12:15
mary5050
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-6-26
收藏
得分:0 

以上代码经过修改后在单独的页面上已经可以实现了,现在我想把这两个下拉菜单添加到某一网站的某一角落,原原本本的代码,为什么添加到网站上就发现了乱七八糟的错误。


2006-06-28 16:49
mary5050
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-6-26
收藏
得分:0 

9楼 的菜单联动JavaScript实现方法确实不错,只是下拉菜单的列表值都是静态添加的,没有达到我要的效果,下拉菜单列表值 不是动态从数据库中导出来的。
谢谢大家,我的问题已经解决了。
解决方法是 在第6楼中我发的代码中将subcat[<%=j%>]=new Array("<%=rs1("name")%>","<%=rs2("name")%>");语句改成subcat[<%=j%>]=new Array("<%=rs1("sever")%>","<%=rs2("name")%>");就行了。


2006-06-29 14:15
快速回复:[求助]如何在动态生成的下拉菜单中通过onChange事件改变另一个下拉菜单 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018440 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved