|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
想了好久得出的方式,想着很多人都为此问题得不到解决而苦恼,本着代码共享的原则,现宣布出来供大家指正(其实不说出来我也难受)。假如您觉得不错请帮忙提提前,好让更多的朋友看到。 此方式绝不是事先将所有记录都写入到页面中再通过脚本过滤,那样虽然简朴,但对于大的数据量显然就不适合了,而且还严峻浪费资源。 将下面的代码稍作修改即可应用于其它地方,异常方便。 为测试用,先建一名 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> 返回类别: 教程 上一教程: 动态创建下拉菜单 下一教程: 通过网络域名得到这台主机的IP地址 您可以阅读与"真正实现两个列表框动态关联"相关的教程: · 关于如何动态地在同一页面实现两个SELECT互传 · 如何实现真正的动态包含 · ASP环境下邮件列表功能的实现 (三) · ASP环境下邮件列表功能的实现 (二) · 用ADO的COMMAND对象实现对WEB数据库动态数据查询的方式 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |