DW ASP玩转动态二级菜单

2008-02-23 05:57:47来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


  本人比较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] 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

  现在是菜单的二级部分,这里不是用跳转菜单,只是个列表罢了,所以代码跟上面的跳转菜单也就差一个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] 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)'否则就用循环列出一切符合条件的记录。

  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>

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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 网页制作点滴

下一篇: Dreamweaver使用中的常见问题和解答