想了好久得出的方法,想着很多人都为此问题得不到解决而苦恼,本着代码共享的原则,现公布出来供大家指正(其实不说出来我也难受)。如果您觉得不错请帮忙提提前,好让更多的朋友看到。 此方法绝不是事先将所有记录都写入到页面中再通过脚本过滤,那样虽然简单,但对于大的数据量显然就不适合了,而且还严重浪费资源。 将下面的代码稍作修改即可应用于其它地方,非常方便。 为测试用,先建一名 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> |
|站长邮箱|小黑屋|手机版|Office中国/Access中国
( 粤ICP备10043721号-1 )
GMT+8, 2025-4-2 12:09 , Processed in 0.077849 second(s), 17 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.