ASP通过递归方法实现无限级树

最近在开发一个房地产的项目,为了便于今后修改方便,全部采用类的定义的方式,方便今后维护,修改,同时包括CSS,JS均可以随意控制,这大大方便了今后的开发效率,当然如何构造健壮的函数是需要认真思考,好了,还是言归正传吧!
 
    为了方便添加,修改分类,以前的做法都是一级分类就是分类,二级分类就是二级,一直想写一个无限级分类的程序,但无奈个人能力有限一直没有写成。其实无限级树分类可以有多种写法,比如通过递归算法、通过XML或是AJAX均可以实现,鉴于我对AJAX和XML的理解尚处于初级阶段,因此对于中小型网站来说,通过递归算法已经足以应付了,但通过本人的查找,网上并没有几个这样的代码,所以我决定要自己写一个通过递归算法实现无限级树,大概写了两个小时终于写出来了,但这个函数还不够健壮,因此请大家将就看,但设计思路一目了然,相信大家都可以明白其原理,代码如下:
 
<!--#include file = "Admin_Start.asp"-->
<%
 Call TreeView(0,"XR_News_Sort_List","Admin_News_Info_List.asp")
%>
<%
'////////////////////////////判断菜单下属是否存在子菜单
Function CheckDown(ParentId,TableName)
 Set Rs_Temps = Server.CreateObject("ADODB.RecordSet")
 Rs_Temps.Open "select Sort_Id from "&TableName&" where Sort_Up = "&Int(ParentId),Conn,1,3
 If Rs_Temps.Eof And Rs_Temps.Bof Then
  CheckDown = false
 Else
  CheckDown = true
 End If
 Set Rs_Temps = Nothing
End Function

'////////////////////////////////////////显示树形结构
Function TreeView(ParentId,TableName,Url)
 Set Rs_Temp = Server.CreateObject("ADODB.RecordSet")
 Rs_Temp.Open "select Sort_Id,Sort_Name,Sort_Num from "&TableName&" where Sort_Up = "&Int(ParentId)&" order by Sort_Num",Conn,1,3
%>
<table>
<%
 If Not(Rs_Temp.Eof And Rs_Temp.Bof) Then
 Do While Not Rs_Temp.Eof
 Flag = CheckDown(Rs_Temp(0),TableName)
 If Flag = false Then
%>
<tr onMouseOver="this.style.background='#ebebeb';" onMouseOut="this.style.background='#ffffff';">
 <td height="30" align="left" style="padding-left:10px">
 <img src="images/minus.gif" width="15" height="15" align="absmiddle" alt="点击展开信息列表">
 <input type="text" size="2" align="absbottom" name="txtNews<%=Rs_Temp(0)%>" value="<%=Rs_Temp(2)%>" /><a href="<%=Url%>?id=<%=Rs_Temp(0)%>" target="right"><%=Rs_Temp(1)%></a></td>
</tr>
<%
 Else
%>
<tr onMouseOver="this.style.background='#ebebeb';" onMouseOut="this.style.background='#ffffff';">
 <td height="30" align="left" style="padding-left:10px">
 <img src="images/plus.gif" width="15" height="15" align="absmiddle" alt="点击展开信息列表" onClick="opencat(cat_<%=Rs_Temp(0)%>,this)" style="cursor:hand" >
 <input type="text" size="2" align="absbottom" name="txtGoods<%=Rs_Temp(0)%>" value="<%=Rs_Temp(2)%>" /><%=Rs_Temp(1)%></td>
</tr>
<tr onMouseOver="this.style.background='#ebebeb';" onMouseOut="this.style.background='#ffffff';">
<tr id="cat_<%=Rs_Temp(0)%>" style="display:none;">
 <td><%Call TreeView(Rs_Temp(0),TableName,Url)%></td>
</tr>
<%
 End If
 Rs_Temp.MoveNext
 Loop
 End If
%>
</tr>
<%
 Set Rs_Temp = Nothing
%>
</table>
<%
End Function
%>
<!--#include file = "Admin_End.asp"-->
 

评论

发表新评论

此内容将保密,不会被其他人看见。
点击刷新验证码
  • 可用的 UBB 标签:
  • 留言最长字数:1000。