当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP实例教程:asp无限级显示分类代码

ASP
ASP下经常用的字符串等函数参考资料
asp下连接数据库 ASP链接数据库字符串大全总结
asp内置对象 ObjectContext 事务管理 详解
asp 内置对象 Application 详解
ASP中 SQL语句 使用方法
ASP 中 Split 函数的实例分析
ASP 中 DateDiff 函数详解 主要实现两日期加减操作
asp 存贮过程 (SQL版asp调用存储过程)
利用ASP实现在线生成电话图片效果脚本附演示
使用ASP记录在线用户的数量的代码
关于ASP生成伪参数技巧 简洁实用的伪(僞)参数
asp 关键词字符串分割如何实现方法
用ASP编写的加密和解密类
ASP之处理用Javascript动态添加的表单元素数据的代码
asp下最常用的19个基本技巧
一些Asp技巧和实用解决方法
asp实现一个统计当前在线用户的解决方案
asp下的一个很简单的验证码程序
asp又一个分页的代码例子
asp实现防止从外部提交数据的三种方法

ASP实例教程:asp无限级显示分类代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-04   浏览: 248 ::
收藏到网摘: n/a

为了方便使用分类,我定义了一个分类表category,里面字段是
id(自动编号)  cat_name(分类名) parent_id(父ID,对应本表ID) cat_order(顺序) is_show(是否显示)  u_id(这个用来区别是新闻分类,还是产品分类,还是其他分类),为了方便,我将这些分类全部放在这张表中。
在给客户添加分类的时候,结果有太多的分类,本来前台显示的时候,将它们全部显示出来了,好长。客户提出修改意见,要求将它们改成点击大分类,才可以将其子分类显示出来,并且每个分类下面还有一条虚线,并且大分类前面有个图片加号,展开后要变成减号。
<script>
function fd(id,num)
{
 t=$("c"+id+"_1").style.display;
 
 if(t=="none")
 {
   t1="block";
   t2="images/fll_34.gif";
 }
 else
 {
  t1="none"; 
  t2="images/fll_34.gif";
 }
 for(i=1;i<=num;i++)
 {
  $("c"+id+"_"+i).style.display=t1;
  $("d_"+id).src=t2;  
 }
}
function $(id)
{
 return document.getElementById(id);
}
</script>
这是asp无限级显示分类代码,并给这些分类加上id

<%
'功能:asp无限级显示分类+js显示与隐藏
'参数:parent_id为父ID,stype为新闻,产品,文章大分类
'原创文章,转载请保留些信息,谢谢
function cat111(parent_id,stype)
set rs1 =server.createobject("adodb.recordset")
sql="select cat_name,cat_id,parent_id from category where parent_id="&parent_id&" and u_id="&stype&" and is_show=1 order by cat_order asc"
set rs1=conn.execute(sql)
If rs1.eof Then
Else 
if(depath>2) then
 display2="none"     
else
 display2="block" 
end if  
dim j
j=1
do while not rs1.eof 
 cat_name1 = rs1("cat_name")
 cat_id1 = rs1("cat_id")  
 parent_id1=rs1("parent_id") 
 '******************下面是你要显示的******************' 
 m9=0
 sql2="select count(cat_id) as t from category where parent_id="&cat_id1&" and u_id="&stype&""    
 set rs2=server.createobject("adodb.recordset")
 set rs2=conn.execute(sql2) 
 if not rs2.eof then
    m9=rs2("t")
 else
  m9=0  
 end if 
 rs2.close
  
 if(depath<=2) then  
  mgif="images/-.gif"
  a="block"
 else
  if(m9>0) then 
  mgif="images/+.gif" 
  else
  mgif="images/-.gif"
  end if
  if(depath=4) then
   a="block"
  else  
   a="none"
  end if
 end if  
 
 
 catstr=catstr & "<tr id=""c"&parent_id&"_"&j&""" style=""display:"&a&"""><td width=""25"" align=""center"" valign=""middle"" class=""dotted_class""><img src="""&mgif&""" width=""12"" height=""11"" id=""d_"&cat_id1&"""></td><td class=""dotted_class leftcatcss"">"
 if(m9>0) then
  catstr=catstr&"<a href=""javascript:void(0);"" _fcksavedurl="""javascript:void(0);""" _fcksavedurl="""javascript:void(0);""" onclick=""fd("&cat_id1&","&m9&")"">" &vbnewline
 else
  catstr=catstr&"<a href=""products.asp?id="&cat_id1&""" target=""_blank"">"&vbnewline
 end if
 for i=1 to depath
   catstr=catstr&"&nbsp;"
 Next
 catstr=catstr&cat_name1&"</a></td></tr>"&vbnewline
 m9=0
     
 sql2="select cat_name,cat_id from category where parent_id="&parent_id1&" and u_id="&stype&" order by cat_order asc"    
 set rs2=server.createobject("adodb.recordset")
 set rs2=conn.execute(sql2)
 if not rs2.eof then
    depath=depath+4 
    call cat111(cat_id1,stype)
 end if
 rs2.close 
 set rs2=nothing 
 depath=depath-4 
 '******************上面是你要显示的******************'
 j=j+1
rs1.movenext
loop
End If
rs1.close
set rs1=nothing
end Function
%>
在使用这个函数之前加上
catstr=""
然后再call,下面的虚线加在css中的dotted_class里面,这样就搞定了。
注意:这里得到的是一个表格的行,要和其他行放在一起,不要加到td里面去了。