热门文章 | 热门软件| 热门源码 | 热门电影 | 知识库 | 联系我们
软件 源码 教程 影视 健康 招聘
  HTML | JavaScript | ASP | PHP | JSP | NET | VB | VC | VF | Windows | Linux | Mysql | Mssql | Oracle | Struts 
当前位置: 创世纪计算机资源网 -> 文章频道 ->asp 
站内搜索:
无限级分类的大体思路
作者:二六空间 来源:blog 整理日期:2007-11-13

做企业网站时可能会碰到客户需要无限级产品分类,大体思路如下。

表category用来存分类
其中字段parentid是用来存放父分类的编号,字段category是分类名,字段order是用来排序的。

读数据的时候,先读出parentid为0的分类(也就是一级分类)进行循环,在循环语句中调用预先定义好的过程,过程中又有自身的循环,从而打到目的,主要代码如下:

 程序代码

<table cellpadding="0" cellspacing="0" class="MainTable" style="width:750px;" align="center">
    <tr><td class="header" colspan="3">产品分类管理</td></tr>
    <tr>
        <th style="width:42%;">类别名称</th>
        <th style="width:42%;">英文类别名称</th>
        <th style="width:16%;">操作选项</th>
    </tr>
    <%
    set rs = server.CreateObject("adodb.recordset")
    rs.open "select * from category where parentid=0 order by [order],id desc",conn,1,1
    if rs.eof and rs.bof then
    %>
    <tr><td colspan="3" align="center">暂时没有产品类别</td></tr>
    <%
    else
        do while not rs.eof
    %>
    <tr>
        <td><%=rs("category")%></td>
        <td><%=rs("category_en")%></td>
        <td><a href="Category.asp?action=edit&id=<%=rs("id")%>">编辑</a> | <a href="inc/process.asp?item=category&action=del&id=<%=rs("id")%>">删除</a></td>
    </tr>
    <%
        Response.Write getlist(rs("id"),0)
        rs.movenext
        loop
    end if
    rs.close
    set rs = nothing
    %>
</table>


调用函数
 程序代码

--获取分类以表格形式列出------------------
Function getlist(parentid,k)
    Dim Rss
    Set Rss = Conn.Execute("select * from category where parentid="&parentid&" order by [order],id desc")
    Do While Not Rss.EOF
        getlist = getlist & "<tr><td>" & tmp(k) & Rss("category") &"</td><td>" & tmp(k) & Rss("category_en") &"</td><td><a href=Category.asp?action=edit&id=" & rss("id") & ">编辑</a> | <a href=inc/process.asp?item=category&action=del&id="&rs("id")&">删除</a></td></tr>"
        getlist = getlist & getlist(Rss("Id"),k+1)
    Rss.MoveNext
    Loop
    Rss.close
    set Rss = nothing
End Function


每次输出分类时都与父分类在列方向相差一个空格
 程序代码

--分类名之前添加空格----------------------
Private Function tmp(n)
    Dim i
    For i = 0 To n
    tmp = tmp & " "
    Next
End Function


搞定。

相关文章
暂无