当前位置:首页 > 网站技术 > ASP

无限级联递归栏目分类源码

...

效果一:(下拉式)
<select>
<option value="">所有分类</option>
<option value="">栏目名称1</option>
<option value=""> ├ 栏目名称1</option>
<option value=""> │ ├ 栏目名称1</option>
<option value=""> │ ├ 栏目名称2</option>
<option value=""> │ │ ├ 栏目名称1</option>
<option value=""> │ │ ├ 栏目名称2</option>
<option value="">栏目名称2</option>
<option value=""> ├ 栏目名称1</option>
<option value=""> │ ├ 栏目名称1</option>
<option value=""> │ ├ 栏目名称2</option>
<option value=""> │ │ ├ 栏目名称1</option>
<option value=""> │ │ ├ 栏目名称2</option>
</select>

option 的value=每级栏目的ID、父ID、栏目名称。如:value="1,1,0,栏目名称"


效果二:(平面式)

所有分类
栏目名称
 ├ 栏目名称
 │ ├ 栏目名称
 │ ├ 栏目名称
 │ │ ├ 栏目名称
 │ │ ├ 栏目名称
栏目名称
 ├ 栏目名称
 │ ├ 栏目名称
 │ ├ 栏目名称
 │ │ ├ 栏目名称
 │ │ ├ 栏目名称


要求:实现无限级联下拉式分类(变量最好简单加注释)
语言:ASP+ACCESS

偶这有些感觉不爽的
1.在外面定了一个di变量来达到当前是几级,然后实现层次关系,感觉对于函数封装有破坏性,不爽。
2.里面包含了html代码,不爽。。
其他不知道还有什么不好的。。。请大家拍砖。。。

说明:
clsDatabase是一个数据操作类,ReturnRecordSet返回记录集
nSpace(di)是返回di个空格...
另外你可以看看动网的,它好像是用Xml的,具体偶没看。。。
递归方便,好使,但对大数据量来说效率就不好了,不知道各位有啥更好的办法???

dim di
di=0
Public Function BoardSel(idd)
dim rst,strSQL,strTmp,objDatabase
Set objDatabase = New clsDatabase
strSQL = "Select ID, BoardName, ParentID FROM BBS_Board Where State <> 0 and ParentID = "&idd&" order By SortNum Desc"
Set rst = objDatabase.ReturnRecordSet(strSQL)
Do While Not rst.eof
strTmp = "<option id=""B"&rst("ID")&""" value="""&rst("ID")&""">"&nSpace(di)

If rst("ParentID")=0 Then
strTmp = strTmp & "╋"
ElseIf rst.AbsolutePosition=rst.RecordCount Then
strTmp = strTmp & "└"
Else
strTmp = strTmp & "├"
End If

strTmp = strTmp & rst("BoardName")&"</option>"&VBcrlf
di=di+1
BoardSel = BoardSel & strTmp & BoardSel(rst("ID"))
di=di-1
rst.MoveNext
Loop
rst.Close
Set rst=Nothing
Set objDatabase = Nothing
End Function

继续阅读
ASP无限级分类生成HTML文件
ASP弹出对话框的方法
ASP中GetRows的用法详解
ASP把无限级分类生成数组
ASP正则表达式HTML分离函数
ASP缓存技术提高网站性能
ASP.NET2.0功能之重构(Refactoring)
VS2005中的WebSite和WebApplication区别
ASP.NET数组基础实例学习
发表评论

昵称:
最新评论
暂时没有评论!