Asp部分
页面一:showChild.asp
<%
'连接数据库
dim conn,connstr,db
db="/websys/okajax/database/tree.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
conn.Open connstr
'显示根目录
sql="select * from t_column where c_Depth=0 "
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
do while not rs.eof
说明,前面几些大家如果熟悉ASP的话,都明白了,就是连接数据库然后查找出第一层目录,我们主要说明下面的程序。
if rs("c_childnum")>0 then
response.Write("<img id='p"&rs("c_Id")&"' src=""images/closed.gif"" width=""30"" height=""15"" onclick=""DivDisplay('c"&rs("c_id")&"','"&rs("c_id")&"','p"&rs("c_id")&"')"" style=""cursor : hand;"" align=""absmiddle"">")
else
response.Write("<img src=""images/nofollow2.gif"" width=""30"" height=""15"" align=""absmiddle"" >")
end if
说明:判断是否有子目录,如果有则显示图标 ,并给此图标赋一个ID,类似P1,P2,P3……,这里面还有一个单击事件,onclick=DivDisplay(divid,id,picid),就是前面JS里的主函数,如果没有则只显示图标
response.Write("<b>")
response.Write(rs("c_Name"))
if rs("c_childnum")>0 then response.Write("("&rs("c_childnum")&")")
response.Write("</b>")
response.Write("<br>")
if rs("c_childnum")>0 then
response.Write("<div id='c"&rs("c_Id")&"' style='display:none;'></div>")
end if
说明:上面这个IF也是判断目录是否有子目录,如果有则创建一个层,并给此层赋一个ID,类似C1,C2,C3……,层在开始时隐藏。
rs.movenext
loop
rs.close
set rs=nothing
conn.close
Set conn = Nothing
%>
页面二:columnAdmin.asp
<%
Response.ContentType = "text/html"
Response.Charset = "GB2312" '解决乱码问题
Dim id,child
id=Request.Form("id")
if id="" then response.end()
'连接数据库
dim conn,connstr,db
db="/websys/okajax/database/tree.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
conn.Open connstr
'显示子目录
sql="select * from t_column where c_parentid="&id
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,1
do while not rs.eof
if rs("c_depth")>0 then
for i=1 to rs("c_depth")
child=child&" "
next
end if
if rs("c_childnum")>0 then
child=child&"<img id='p"&rs("c_Id")&"' src=""images/closed.gif"" width=""30"" height=""15"" onclick=""DivDisplay('c"&rs("c_Id")&"','"&rs("c_Id")&"','p"&rs("c_Id")&"')"" style=""cursor : hand;"" align=""absmiddle"">"
else
child=child&"<img src=""images/nofollow2.gif"" width=""30"" height=""15"" align=""absmiddle"" >"
end if
child=child&rs("c_Name")
if rs("c_childnum")>0 then child=child&"("&rs("c_childnum")&")"
child=child&"<br>"
if rs("c_childnum")>0 then
child=child&"<div id='c"&rs("c_Id")&"' style='display:none;'></div>"
end if
rs.movenext
loop
rs.close
set rs=nothing
conn.close
Set conn = Nothing
Response.Write (child)
Response.End
%>
说明:以上是处理页的ASP代码,相信有前面showChild.asp的说明,大家很容易看明白这些代码,基本是一样的。
这就是全部了,是不是很简单的就实现了目录树。
以上代码在IE 6.0和FireFox 2.0.0.3上测试通过。最后说明一下,本人只是一个普通的WEB程序员,对AJAX也是刚刚学不久,写这篇文章也只是想给有需要的朋友一些帮助。如果有什么错漏请大家指正。以下是我的联系方式:tangsiner@163.com