·您的位置: 首页 » 资源教程 » 编程开发 » ASP » 真正实现两个列表框动态关联

真正实现两个列表框动态关联

类别: ASP教程  评论数:0 总得分:0
想了好久得出的方法,想着很多人都为此问题得不到解决而苦恼,本着代码共享的原则,现公布出来供大家指正(其实不说出来我也难受)。如果您觉得不错请帮忙提提前,好让更多的朋友看到。

此方法绝不是事先将所有记录都写入到页面中再通过脚本过滤,那样虽然简单,但对于大的数据量显然就不适合了,而且还严重浪费资源。

将下面的代码稍作修改即可应用于其它地方,非常方便。

为测试用,先建一名 Test.mdb 的 Access2000 数据库,建立两个表 Type,Title,结构如下:
Type
******************
ID 自动编号,主键
名称 文本,长度合适

Title
********************
ID 自动编号,主键
类别 长整形数字,并联 Type 表的 ID 字段
标题 文本,长度合适

我们的目的是从 Type 表中读取记录并写入到第一个列表框中,并在第一个列表框选择时从 Title 表中过滤出相应记录写入到第二个列表框中,并且可以随时获得第二列表框所选的值。

关键:在 B.asp 放置一隐藏域,来存放第二列表框所选的值,在 A.asp 中通过脚本来访问该隐藏域的值来达到跨页面读取数值的目的。

\'********************************************************
\' conn.asp 连接数据库,这里用 test.mdb 来作测试
\'********************************************************
<%
dim conn
dim connstr

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

\'********************************************************
\' A.asp 主页面,内嵌 B.asp(第二列表框在B.asp页面)
\'********************************************************
<!--#include file="conn.asp"-->

<table>
<tr><td>

<form method="POST" action="">
<%

Dim I,FirstID
I=1
Set Rs= Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM Type;"
RS.Open SQL,Conn,1,1

Response.Write "第一列表框 <select size=\'1\' ID=\'A\' name=\'A\' OnChange=\'VBScript:ChangType\'>"

DO While Not RS.Eof
Response.Write "<option value=\'" & RS("ID") & "\'>" & RS("名称") & "</option>"
RS.MoveNext
Loop

Response.Write "</select>"
%>
<P><IFRAME HEIGHT="22" WIDTH="300" FRAMEBORDER=NO MARGINHEIGHT=0 SRC="B.asp?ID=1" ID="TitleFrame"></IFRAME></P>
<P><input type=\'button\' onclick=\'vbscript:Show.innerText="选择的值是:" & Document.Frames(0).Document.All.H.value\' value=\'查看第二列表框所选值\'></P>
</Form>
</td></tr><tr><td ID="Show"></td></tr>
</table>

<Script Language=VBScript>
Sub ChangType
TitleFrame.Location.Replace("B.asp?ID=" & Document.All.A.Value)
End Sub
</Script>

<%
RS.Close
Set RS=Nothing
Conn.Close
Set Conn=Nothing
%>

\'********************************************************
\' B.asp 第二列表框所在页面,内嵌于 A.asp
\'********************************************************
<!--#include file="Conn.asp"-->
<%
TypeID=Trim(Request.QueryString("ID"))

Dim RS
Set RS= Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM Title Where 类别=" & TypeID & ";"
RS.Open SQL,Conn,1,1

Response.Write "第二列表框 <select size=\'1\' name=\'B\' ID=\'B\' OnChange=\'H.value=this.options[this.selectedIndex].value\'>"

Do While Not RS.Eof
Response.Write "<option value=\'" & RS("ID") & "\'>" & RS("标题") & "</option>"
RS.MoveNext
Loop

Response.Write "</select>"

RS.Close
Set RS=Nothing
Conn.Close
Set Conn=Nothing
%>
<input type="hidden" name="H">
<script Language="vbscript">
H.value=B.options(B.selectedIndex).value
</script>
-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1