欢迎光临
我们一直在努力

使用asp结合数据库实现不限级数的弹出菜单-ASP教程,ASP技巧

建站超值云服务器,限时71元/月

< !– #include virtual=include/database.asp –>

< %

set rs=server.createobject("adodb.recordset")

sql="select menu_name, menu_link, menu_bgcolor, menu_color,id from enter_individual where (parent_id = (select id from enter_individual where menu_flag = root )) " 查询得到根节点

rs.open sql,conn,1,1

response.write "< table width=100% border=0 cellspacing=1 cellpadding=0 align=center>< tr bgcolor=#3399cc valign=bottom align=center>"

sumnum=rs.recordcount

myarray=rs.getrows()

rs.close ()

widd=780/sumnum 从一级子菜单数目判断弹出菜单x坐标的递增像素

dim i

i=0

defaultbgcolor="#3399cc" 指定默认底色

defaultcolor="#ffffff" 指定默认字体颜色

defaultlink="#" 指定默认链接

posit_x=0 x位置

flag=1 标志,作为菜单弹出方向 1表示向右,0表示向左

response.write myarray(4,6)

while i response.write "< td height=20 bgcolor="&myarray(2,i)&" width="&widd&">< a href="&myarray(1,i)&" onmouseover=java script:a"&myarray(4,i)&".style.display=block onmouseout=java script:a"&myarray(4,i)&".style.display=none >< font color="&myarray(3,i)&" >"&myarray(0,i)&"< /a>< /td>"

———————————————–

i=i+1

wend

response.write "< /tr>< /table>"

i=0

while i posit_y=100 y位置回到原位

if i>=(sumnum/2) then 如果菜单进入右半部分,则弹出转向

flag=0

end if

调用getsubmenu 函数 设置该项一级菜单的下级菜单,以myarray(4,i) 即菜单id作为下级菜单所在div 的id

getsubmenu myarray(4,i),posit_x,posit_y

posit_x=posit_x+widd 下一个一级菜单的子菜单的 x坐标值增加一个单位

i=i+1

wend

使用递规算法的到下级菜单的函数

parent_id 父 id; posit_x 弹出层的左边位置; posit_y 弹出层的离上面位置;

function getsubmenu(parent_id,posit_x,posit_y)

dim myarray

dim sumnum

dim i

查询子菜单的下级菜单

sql="select menu_name, menu_link, menu_bgcolor, menu_color,id from enter_individual where parent_id = "&parent_id&" and user_id = "&userid&""

rs.open sql,conn,1,1

如果下级菜单不存在,则层数减一 ,关闭数据库链接,建立一个以父id为div id的空层,然后返回

if rs.eof=true then

level=level-1

rs.close ()

response.write parent_id

response.write "< div id=a"&parent_id&" style=position: absolute; top: 4; left: -1; display: none; width: 0; height: 0>< /div>"

else

如果存在取到数据库数据,并调用setsubmenu显示菜单

sumnum=rs.recordcount

myarray=rs.getrows()

rs.close ()

setsubmenu myarray,sumnum,parent_id,posit_x,posit_y

对数据进行循环,递规调用getsubmenu

i=0

while i< sumnum

posit_y=posit_y*1+20 递规一次posit_y 加一个单位,

if level=0 then 如果级数减到0 则回到1

level=1

end if

if flag=1 then

getsubmenu myarray(4,i),posit_x+level*widd,posit_y-level*20 递规调用getsubmenu x,y坐标延伸 level 个单位

end if

if flag=0 then

getsubmenu myarray(4,i),posit_x-level*widd,posit_y-level*20 递规调用getsubmenu x,y坐标延伸 level 个单位

else

getsubmenu myarray(4,i),posit_x+level*widd,posit_y-level*20 递规调用getsubmenu x,y坐标延伸 level 个单位

end if

i=i+1

wend

end if

end function

设置子菜单函数

myarray 菜单数据 ,sumnum 数组大小 ,parent_id 层的id ;

posit_x 弹出层的左边位置; posit_y 弹出层的离上面位置;

function setsubmenu (myarray,sumnum,parent_id,posit_x,posit_y)

dim i

parent_id="a"&parent_id 父菜单id前面加上a 作为层的id

hh=sumnum*20 数组大小乘以20作为层的高度

response.write "< div onmouseover=java script:"&parent_id&".style.display=block onmouseout=java script:"&parent_id&".style.display=none id="&parent_id&" style=position: absolute; top:"&posit_y&"; left:"&posit_x&"; height:"&hh*1&"; width: "&widd&"; display:none;vertical-align: top>< table width=100% border=0 cellspacing=1 cellpadding=0 >"

i=0

while i

myarray(0,i)=trim(myarray(0,i))

myarray(1,i)=trim(myarray(1,i))

myarray(2,i)=trim(myarray(2,i))

myarray(3,i)=trim(myarray(3,i))

if myarray(2,i)="" then

myarray(2,i)=defaultbgcolor

end if

if myarray(3,i)="" then

myarray(3,i)=defaultcolor

end if

if myarray(1,i)="" then

myarray(1,i)=defaultlink

end if

response.write "< tr align=center >< td width=100% height=20 bgcolor="&myarray(2,i)&" onmouseover=java script:"&parent_id&".style.display=block;a"&myarray(4,i)&".style.display=block onmouseout=java script:a"&myarray(4,i)&".style.display=none>< a href="&myarray(1,i)&">< font color="&myarray(3,i)&" >"&myarray(0,i)&"< /font>< /a>< /td>< /tr>"

i=i+1

wend

response.write " < /table> < /div>"

end function

set rs=nothing

conn.close ()

set conn=nothing

% >

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 使用asp结合数据库实现不限级数的弹出菜单-ASP教程,ASP技巧
分享到: 更多 (0)