本人比較B,不懂得怎麼樣用影片解決,只好用我這個讓人糊里糊塗的話來寫了。
一般情況下這種情況是來對二級的目錄有用,對於現在網站流傳的JS好多種,但都無外乎那些令像我這樣的暈頭轉向的JS代碼。 。一下子for...一下子array的。
廢話少說,切入正題了。
首先得建一個表,當然,如果你的表中就已經建好目錄的話,那這一步可以省略了。但有一點要提醒:這個表格是我這個例子的使用依據(我不知道這樣說對不對)。
由於我用的表格是ACCESS的,所以建表就不說了,只列出這個兩個表格的對應的欄位名稱(資料庫名稱:db.mdb):
表名:type_tree -父類別欄位:type_id(自動編號) type_name(類別名稱)
表名:s_type -子類別欄位:id(自動編號) s_name(子類別名稱) type_id(父類別ID)-與父類別表相對應
現在是建立資料庫連線:
Dim conn, connStrSet conn = server.CreateObject("ADODB.Connection")connStr = "Provider = Microsoft.jet.oledb.4.0;"connStr = connStr & "Data Source = " & server.mappath("db.mdb")Conn.Open connStr
以上程式碼就該不用再解釋了吧,都是大家常用的程式碼。 。
現在進入實質的操作:)
二級關聯選單一般情況下都是以下拉選單來做,這裡我也不例外,一樣用下拉式選單來做。
只不過這裡有一個地方不一樣哦。
就是一個用的是跳轉選單,這點很重要,成功與否全看這個選單有沒有用對!
以下是這個跳轉選單的程式碼!
<select name="first" onChange="MM_jumpMenu('parent',this,0)">
<%
sql = "select [type_id],[type_name] 從 [type_tree]"
set rs = conn.execute(sql)'取得父類別的ID及名稱
if rs.eof or rs.bof then
response.write "<option>-----</option>" '如果沒有記錄,就顯示-----
else
while not(rs.eof or rs.bof) '有記錄,就將父名稱列出來,形成下拉。
response.write ("<option value='?sec=" & rs(0) & "'")
if cstr(rs(0)) = request.querystring("sec") then
response.write "selected"
end if
response.write (">" & rs(1) & "</option>")
rs.movenext
wend
rs.movefirst '將遊標移到第一條,以備下面之用。
end if
%>
</select>
哦,對了,還有一段代碼忘了貼出來了,這個是跳轉菜音的關鍵啊,看我粗心的!
補上補上:
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>
以上程式碼貼到<head>裡,是DW生成,我看不太懂什麼意思,所以不註解了:D
現在是選單的二級部分,這裡不是用跳轉選單,只是一個列表罷了,所以程式碼跟上面的跳轉選單也就差一個onchange這個函數。
以下是這個選單的程式碼,由於循環跟判斷相對上面來說複雜一些,大夥要看清楚一點哦。
<select name="second">
<%if rs.eof or rs.bof then
response.write ("<option>--------</option>")
else
if request.querystring("sec") = "" then '取得跳轉之後的sec值
temp=rs(0) 如果為空,就把temp的值設為第一筆記錄的值
else
temp = request.querystring("sec") '否則就為收到的值
end if
subsql = "select [s_name] 從 [s_type] 其中 type_id='"&temp&"'"
set subrs = conn.execute(subsql) '列出所有資料為temp的記錄
if subrs.eof 或 subrs.bof then
response.write ("<option>-----</option>")
'如果沒有記錄,則在這個清單中顯示"-----"
else
while not(subrs.eof or subrs.bof)'否則就用迴圈列出一切符合條件的記錄。
response.write ("<option value=" & subrs(0) & ">" & subrs(0) & "</option>")
subrs.movenext
wend
end if
end if
'關閉所有的記錄集
subrs.close
set subrs = nothing
rs.close
set rs = nothing
conn.close
set conn = nothing
%>
</select>
到現在為止,已經將這個二級選單的製過程做完了,很簡單的一個看把我給說的。
大家看不懂再說吧,反正我已經不知道該怎麼說了。
高手們不吝賜教啊。