×

关注微信公众号

免备案网站空间虚拟主机双线空间域名查询PS数码后期
photoshop互助课堂数百G视频教程下载英语培训机构初中英语如何学随时随地聆听大师开讲/课堂
软件安装教程 远程服务 超值!手绘教程抠图教程路径专辑photoshop cs3视频教程
查看: 4324|回复: 13

[asp.net] DW+ASP 玩转动态二级菜单

[复制链接]
发表于 2008-7-16 10:38:50 | 显示全部楼层 |阅读模式
首先得建一个表,当然,如果你的表中就已经建好目录的话,那这一步可以省略了。但有一点要提醒:这个表是我这个例子的使用依据(不知道这样说对不对)。
   
  由于我用的表是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>
   
  到现在为止,已经将这个二级菜单的制过程做完了,很简单的一个看把我给说的。
  大家看不懂再说吧,反正我已经不知道该怎么说了。
  高手们不吝赐教啊。
本帖的地址:http://bbs.jcwcn.com/forum.php?mod=viewthread&tid=193527
跟着教程做一遍,做完的图要到这里评论交作业,教程有看不懂的地方,可以在贴子下面评论
发表于 2008-11-3 18:08:51 | 显示全部楼层
酷素材
学习学习,再学习。
回复 支持 反对

使用道具 举报

发表于 2009-1-17 14:24:15 | 显示全部楼层
把网页中的电话号码生成图片的ASP程序
回复 支持 反对

使用道具 举报

发表于 2009-3-4 14:34:00 | 显示全部楼层
谢谢了哈
回复 支持 反对

使用道具 举报

发表于 2009-3-30 21:00:56 | 显示全部楼层
酷素材
谢谢了
回复 支持 反对

使用道具 举报

发表于 2009-4-29 22:49:40 | 显示全部楼层
酷素材
不错不错
有收获
回复 支持 反对

使用道具 举报

发表于 2009-5-7 18:35:34 | 显示全部楼层
辛苦啦!!
回复 支持 反对

使用道具 举报

发表于 2009-5-26 21:26:31 | 显示全部楼层
谢谢!
回复 支持 反对

使用道具 举报

发表于 2009-6-17 22:28:17 | 显示全部楼层
支持一下,不错不错,值得收藏、。
回复 支持 反对

使用道具 举报

发表于 2017-9-13 10:55:21 | 显示全部楼层
难得一见的好帖
回复 支持 反对

使用道具 举报

发表于 2017-9-13 11:18:55 | 显示全部楼层
很好哦。。。
回复 支持 反对

使用道具 举报

发表于 2017-9-13 10:42:52 | 显示全部楼层
学习了。。。
回复 支持 反对

使用道具 举报

发表于 2017-9-13 11:10:00 | 显示全部楼层
果断收藏了
回复 支持 反对

使用道具 举报

发表于 2017-9-13 10:40:32 | 显示全部楼层
教程网我挺你
回复 支持 反对

使用道具 举报

发表于 半小时前 | 显示全部楼层
楼主是超人
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | [立即注册]

本版积分规则

2345