MSDN 和CSDN 左邊導(dǎo)航樹的效果都是在點擊父節(jié)點時,再發(fā)出請求填充其子節(jié)點!好像網(wǎng)頁只刷新部分! Javascript + [ASP + Access] 實現(xiàn)
源程序下載: http://www./Private/Zip/Tree.zip
<!-- Tree.asp --> <!DOCTYPE HTML PUBLIC "-//w3c//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD> <BODY> <iframe width="100%" height="30" id="hiddenframe"></iframe> <script> function ExpandNode(ParentNode,ParentId){ var NodeX = eval(ParentNode.id + ‘_0‘); if (NodeX.style.display == ‘none‘) { NodeX.style.display="block"; if (NodeX.loaded == ‘no‘) { document.frames[‘hiddenframe‘].location.replace("http://localhost/dvbbs/subtree.asp?PID=" + ParentId + "&PNode=" + ParentNode.id); NodeX.loaded = ‘yes‘; } } else { NodeX.style.display=‘none‘; } } </script> <CENTER> <TABLE border="1" width="20%" height="60%"> <TR> <TD> <DIV style="OVERFLOW: auto;WIDTH: 100%;HEIGHT:100%"> <TABLE width =300%> <TR> <TD> <% dim adoConnection set adoConnection = Server.Createobject("ADOdb.Connection") ‘a(chǎn)doConnection.Open "Provider=sqlOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Test;Data source=TRIATON\PSQL2KE" adoConnection.Open "Provider=microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("/dvbbs") & "\Tree.mdb;Persist Security Info=False" dim adoRecordset set adoRecordset = Server.CreateObject("ADODB.Recordset") adoRecordset.Open "select *,(select count(*) from tree where parentid = T.id) as children from tree T where rootid = id ",adoConnection dim i i=0 do until adoRecordset.eof %> <div id=‘Node_<% = i %>‘> <a href=‘#‘ <% if adoRecordset.Fields.item("Children").value >0 then %> onClick=‘ExpandNode(Node_<% = i %>,<% =adoRecordset.Fields.item("id").value%>)‘>+</a> <% else %> >-</a> <% end if%> <a href=‘#‘ onDblClick=‘ExpandNode(Node_<% = i %>,<% =adoRecordset.Fields.item("id").value%>)‘><% =adoRecordset.Fields.item("remark").value%></a> </div> <div id=‘Node_<% = i %>_0‘ style=‘display: none‘ loaded=‘no‘> 正在加載 ... </div> <% i=i+1 adoRecordset.MoveNext loop adoRecordset.close set adoRecordset = nothing adoConnection.close set adoConnection = nothing %> </TD> </TR> </TABLE> </DIV> </TD> </TR> </TABLE> </CENTER> </BODY> </HTML>
<!-- SubTree.asp --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD> <BODY> <% dim parentid parentid = request.querystring("PID") parentnode = request.querystring("Parentnode") dim adoConnection set adoConnection = Server.CreateObject("ADODB.Connection") ‘ adoConnection.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Test;Data Source=TRIATON\PSQL2KE"
adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("/dvbbs") & "\Tree.mdb;Persist Security Info=False" dim adoRecordset set adoRecordset = Server.CreateObject("ADODB.Recordset") adoRecordset.Open "select *,(select count(*) from tree where parentid =T.id ) as Children from tree T where parentid = " & parentid ,adoConnection response.write adoRecordset.source dim i Dim SHTML dim parentnode parentnode = request.querystring("Pnode") dim j j= len(parentnode) - len(replace(parentnode,"_","")) dim nSpace for i=0 to j - 1 nSpace = nSpace + " " next i=0 do until adoRecordset.eof shtml = shtml _ & "<div id=‘" & parentnode & "_" & i + 1 & "‘>" & nSpace _ & "<a href=‘#‘" if adoRecordset.Fields.item("Children").value >0 then shtml = shtml & " onClick=‘ExpandNode(" & parentnode & "_" & i + 1 & "," & adoRecordset.Fields.item("id").value & ")‘>+" else shtml = shtml & ">-" end if shtml = shtml & "</a>\n" & "<a href=‘#‘" if adoRecordset.Fields.item("Children").value >0 then shtml = shtml & "onDblClick=‘ExpandNode(" & parentnode & "_" & i + 1 & "," & adoRecordset.Fields.item("id").value & ")‘" end if shtml = shtml & ">" & adoRecordset.Fields.item("id").value & ": " & adoRecordset.Fields.item("remark").value & "</a></div>" if adoRecordset.Fields.item("Children").value >0 then shtml = shtml & "<div id=‘" & parentnode & "_" & i + 1 & "_0‘ style=‘display: none‘ loaded=‘no‘>" & nSpace & " 正在加載 ...</div>" end if i=i+1 adoRecordset.MoveNext loop adoRecordset.close set adoRecordset = nothing adoConnection.close set adoConnection = nothing ‘response.write shtml %> <script> var x = eval(‘parent.‘ + ‘<% =request.querystring("Pnode") & "_0"%>‘ ) ; x.innerHTML="<% =shtml %>"; </script> </BODY> </HTML>
表結(jié)構(gòu): Tree(id,parentid,remark)
|