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

ASP
Access 2000 数据库 80 万记录通用快速分页类
Microsoft JET Database Engine 错误 ''80004005'' 未指定的错误的完美解决方法
收藏的ASP常用的函数集
asp分页的一个类
ASP开发网页牢记注意事项
ASP下操作Excel技术总结分析
ASP数据岛操作类
ASP经典分页类
asp论坛在线人数统计研究
ASP调用SQL SERVER存储程序
asp输出bmp
ASP连接数据库的全能代码
ASP面向对象编程探讨及比较
web文件管理器的后续开发
一小偷类!!有兴趣的可以看看
利用ASP实现事务处理的方法
大数量查询分页显示 微软的解决办法
如何把ASP编写成DLL
asp实现树型结构
超级ASP大分页_我的类容我做主

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-04   浏览: 256 ::
收藏到网摘: 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里面去了。