想了好久得出的方法,想著很多人都為此問題得不到解決而苦惱,本著代碼共享的原則,現公布出來供大家指正(其實不說出來我也難受)。如果您覺得不錯請幫忙提提前,好讓更多的朋友看到。
此方法絕不是事先將所有記錄都寫入到頁面中再通過腳本過濾,那樣雖然簡單,但對于大的數據量顯然就不適合了,而且還嚴重浪費資源。
將下面的代碼稍作修改即可應用于其它地方,非常方便。
為測試用,先建一名 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>
<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>
|