DW+ASP 玩转动态二级菜单

浏览:36日期:2023-01-10

一般情况下这种情况是来对二级的目录有用,对于现在网站流传的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] from [type_tree]'set rs = conn.execute(sql)'取得父类的ID及名称if rs.eof or rs.bof thenresponse.write '<option>-----</option>' '如果没有记录,就显示-----elsewhile 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 ifresponse.write ('>' & rs(1) & '</option>') rs.movenextwendrs.movefirst '将游标移到第一条,以备下面之用。end if%></select>

哦,对了,还有一段代码忘了贴出来了,这个是跳转菜音的关键啊,看我粗心的!补上补上:<script language='JavaScript' type='text/JavaScript'><!--function MM_jumpMenu(targ,selObj,restore){ //v3.0eval(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 thenresponse.write ('<option>--------</option>')elseif request.querystring('sec') = '' then'获取跳转之后的sec值 temp=rs(0)如果为空,就把temp的值设为第一条记录的值else temp = request.querystring('sec')'否则就为收到的值end ifsubsql = '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>') '如果没有记录,则在这个列表中显示'-----'elsewhile not(subrs.eof or subrs.bof)'否则就用循环列出一切符合条件的记录。 response.write ('<option value=' & subrs(0) & '>' & subrs(0) & '</option>')subrs.movenextwendend if end if

'关闭所有的记录集subrs.closeset subrs = nothingrs.closeset rs = nothingconn.closeset conn = nothing%></select>

到现在为止,已经将这个二级菜单的制过程做完了。

相关文章: