您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> ACCESS >> 辅导 >> 正文    
  真正实现两个列表框动态关联 【注册男护士专用博客】          

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

www.nanhushi.com     佚名   不详 

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

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

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

  为测试用,先建一名 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>

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。