清远市有几个区:请教一个asp中关于两个selete下拉框之间的传值问题

来源:百度文库 编辑:高校问答 时间:2024/05/09 03:33:53
我的想法是从部门表中读出所有部门的名称显示在第一个下拉框中,当选定其中一个部门后,根据该部门的id号,在第二个下拉框中显示该部门下所有人员。我试过用onchange来实现传值,由于小弟是个新手,不知道该怎么写程序,请大虾们赐教。

与数据库相连的二级下拉菜单完整代码文件select.asp代码如下:

<!--#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=0;i < onecount; i++)
{
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.0;Data Source=" &dbpath
conn.open connstr
%>

数据库:

表city:

表sheng:

说明:

'一个数据库中有两个表,一个是sheng表,里面保存着省的资料,这个表有两个字段,一个是sheng_id,这个ID是自动生成的,
'一个是sheng,是用来保存省份的名称.两个字段都为字符型,另外一个表是city里面保存着城市的资料,这个表有三个字段,
'一个是city_id,这个ID也是自动生成的,一个是city_name,是用来保存城市的名称的,一个是city_sheng,是用来这个城市所在的省
'这个字段也是让关联菜单能够关联起来的一个字段
----------------------------------------------------
省换成部门就行了!!!!!

这个就是你说的代码.
<Script language="JavaScript">
var onecount;
subcat = new Array();
<% sql="select * from sheng";
rs=dealsql.executeQuery(sql);
int n=0;
while (rs.next())
{
%>
subcat[<%=n%>]=new Array("<%=rs.getString("s_name")%>","<%=rs.getString("s_id")%>","0")
<%
n=n+1;
}
rs.close();
sql="select * from shi";
rs=dealsql.executeQuery(sql);
while (rs.next())
{
%>
subcat[<%=n%>]=new Array("<%=rs.getString("ss_name")%>","<%=rs.getString("ss_id")%>","<%=rs.getString("s_id")%>")
<%
n=n+1;
}
rs.close();
%>
onecount=398;
function changelocation1(locationid)
{
document.form1.shiyu.length = 0;

var locationid=locationid;
var i;
for (i=0;i < onecount; i++)
{
if (subcat[i][2] == locationid)
{
document.form1.shiyu.options[document.form1.shiyu.length] = new Option(subcat[i][0], subcat[i][1]);
}
}

}
function changelocation11(locationid)
{
document.form1.shiyu1.length = 0;

var locationid=locationid;
var i;
for (i=0;i < onecount; i++)
{
if (subcat[i][2] == locationid)
{
document.form1.shiyu1.options[document.form1.shiyu1.length] = new Option(subcat[i][0], subcat[i][1]);
}
}

}
</SCRIPT>

<TD align="">所 在 城 市<BR><SELECT name="diyu" onchange="changelocation1(document.form1.diyu.options[document.form1.diyu.selectedIndex].value)">
<OPTION value="1" selected>省份</OPTION>
<%
sql = "select * from sheng";
rs=dealsql.executeQuery(sql);
while (rs.next())
{
%>
<option value="<%=rs.getString("S_id")%>"><%=rs.getString("S_Name")%></option>
<%
}
rs.close();
%>
</select>
<select name="shiyu">
<option value="6570" selected> 城 市 </option>
</select></TD>

在onchange事件中写
selece 人员 from [table] where id=*;