当前位置:首页 » 网站技术 » 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.NET生成静态网页代码
ASP.NET2.0中CSS失效解决方案
ASP.NET2.0隐藏GridView列的问题
ASP.NET2.0中使用存储过程
ASP.NET2.0 Windows身份验证
ASP.NET2.0操作数据库方法
ASP.NET2.0中客户端脚本使用
ASP.NET中前台javascript与后台代码调用
ASP.NET文件上传实例代码
发表评论

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