◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
Email:sunwindy[A]gmail.com
ASP使用递归实现无限级分类方法
Post by 密陀僧, 2009-7-1, Views:Function OpenDB()
On Error Resume Next
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =test.mdb"
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "数据库链接错误"
Response.End
End If
OpenDB=True
End Function
2、数据表设计
Table:Catogory
字段:ID,Cate_name,Cate_Parent
3、递归函数
Function CheckNum(Byval Num)
If Not Isnumeric(Num) Then
CheckNum=0
Exit Function
End If
CheckNum=Cint(Num)
End Function
Sub GetClassOption(Byval C_ID,Byval CoinStr)
C_ID=CheckNum(C_ID)
If C_ID<>0 Then
Set Rs_CID=Conn.Execute("Select ID,Cate_name From Catogory Where Cate_Parent="&C_ID)
Do While Not Rs_CID.Eof
Response.Write("<option value="""&Rs_CID("ID")&"""")
If ClassID=int(Rs_CID("ID")) Then Response.Write(" selected=""selected"" ")
Response.Write(">"&CoinStr&""&Rs_CID("Cate_name")&"</option>"&vbcrlf)
Call GetClassOption(Rs_CID("ID")," "&CoinStr)
Rs_CID.Movenext
Loop
Rs_CID.Close
Set Rs_CID=Nothing
End If
End Sub
4、第一级分类显示及调用递归显示无限级分类
<select name="ClassID" id="ClassID">
<option value="0">请选择分类</option>
<%Set Rs=Conn.Execute("select ID,Cate_name From Catogory Where Cate_Parent=0 Order by ID")
Do While Not Rs.Eof
Response.Write("<option value="""&Rs("ID")&"""")
Response.Write(">├"&Rs("Cate_name")&"</option>"&vbcrlf)
Call GetClassOption(Rs("ID")," |-")
Rs.Movenext
Loop
Rs.Close
Set Rs=Nothing
%>
</select>
具体实现效果见:http://www.yixueren.com/subject.asp?C_ID=1
或许你还对下面的文章感兴趣
- 当前记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制。 (2008-5-24 23:19:46)
- 如何优化asp代码 (2008-1-17 15:54:54)
- 把全角的数字转换成半角 (2007-7-1 21:24:52)
- 给网页加一个停止加载代码的按钮 (2007-1-2 23:48:25)
- [转载]asp开发规范<三> (2006-11-21 1:53:38)
- [转载]ASP开发规范<二> (2006-11-21 1:35:17)
- [转载]asp开发规范<一> (2006-11-21 1:34:21)
- 一个asp采集程序类 (2006-9-8 1:55:0)
- [解决问题]asp连接access的问题(清理系统垃圾.bat的后遗症) (2006-5-21 10:57:24)
