分享
 
 
 

DW+ASP玩转动态二级菜单

王朝asp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

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

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有