无限级联递归栏目分类源码
来源:网络 作者:佚名 时间:08-06-26 点击:
效果一:(下拉式)
<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