一般情況下這種情況是來對二級的目錄有用,對于現(xiàn)在網站流傳的JS好多種,但都無外乎那些令像我這樣的菜鳥暈頭轉向的JS代碼。。一下子for...一下子array的。 廢話少說,切入正題了。
首先得建一個表,當然,如果你的表中就已經建好目錄的話,那這一步可以省略了。但有一點要提醒:這個表是我這個例子的使用依據(jù)(不知道這樣說對不對)。
由于我用的表是ACCESS的,所以建表就不說了,只列出這個兩個表的相應的字段名(數(shù)據(jù)庫名:db.mdb): 表名:type_tree ——父類 字段:type_id(自動編號) type_name(類別名稱)
表名:s_type ——子類 字段:id(自動編號) s_name(子類別名稱) type_id(父類ID)——與父類表相對應
現(xiàn)在是建立數(shù)據(jù)庫連接:
Dim conn, connStr Set conn = server.CreateObject("ADODB.Connection") connStr = "Provider = Microsoft.jet.oledb.4.0;" connStr = connStr & "Data Source = " & server.mappath("db.mdb") Conn.Open connStr 以上代碼應當不用再解釋了吧,都是大家常用的代碼。。
現(xiàn)在進入實質性的操作:) 二級關聯(lián)菜單一般情況下都是以下拉菜單來做,這里我也不例外,一樣用下拉菜單來做。 只不過這里有一個地方不一樣哦。 就是一個用的是跳轉菜單,這一點很重要,成功與否全看這個菜單有沒有用對! 以下是這個跳轉菜單的代碼! <select name="first" onChange="MM_jumpMenu(\'parent\',this,0)"> <% sql = "select [type_id],[type_name] from [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 現(xiàn)在是菜單的二級部分,這里不是用跳轉菜單,只是一個列表罷了,所以代碼跟上面的跳轉菜單也就差一個onchange這個函數(shù)。 以下是這個菜單的代碼,由于循環(huán)跟判斷相對上面來說復雜一些,大伙要看清楚一點哦。 <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] from [s_type] where type_id=\'"&temp&"\'" set subrs = conn.execute(subsql) \'列出一切資料為temp的記錄 if subrs.eof or subrs.bof then response.write ("<option>-----</option>") \'如果沒有記錄,則在這個列表中顯示"-----" else while not(subrs.eof or subrs.bof)\'否則就用循環(huán)列出一切符合條件的記錄。 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>
到現(xiàn)在為止,已經將這個二級菜單的制過程做完了,很簡單的一個看把我給說的。 大家看不懂再說吧,反正我已經不知道該怎么說了。 高手們不吝賜教啊……
|