最近在开发一个房地产的项目,为了便于今后修改方便,全部采用类的定义的方式,方便今后维护,修改,同时包括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"-->
最新评论