| 
类似 MSDN CSDN 导航树效果,JSP + JavaScript 实现! 
 <!-- Tree.jsp -->
 <%@ page contentType ="text/html;charset=gb2312" %>
 <%@ page import="java.util.*;" %>
 <!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="100" 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("subtree.jsp?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>
 <%
 java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 //  java.sql.Connection ConnectionX = java.sql.DriverManager.getConnection("jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\Resin\\doc\\examples\\Tree\\tree.mdb","admin", "");
 //  java.sql.Statement StatementX = ConnectionX.createStatement();
 java.sql.ResultSet ResultSetX = java.sql.DriverManager.getConnection("jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=e:\\resin-2.1.6\\doc\\examples\\Tree\\tree.mdb","admin", "").createStatement().executeQuery("select *,(select count(*) from tree where parentid = T.id) as children from tree T where parentid = 0");
 int i=0;
 int children;
 int ID;
 while (ResultSetX.next())
 {
 children=ResultSetX.getInt("children");
 ID=ResultSetX.getInt("id");
 %>
 <div id='Node_<%= i %>'><a href='#'
 <% if (children >0)
 {%>
 onClick='ExpandNode(Node_<%= i %>,<%=ID %>)'>+</a>
 <%;}
 else {%>
 >-</a><%;}%>
 <a href='#'
 <% if (children >0)
 {%>
 onDblClick='ExpandNode(Node_<%= i %>,<%=ID%>)'
 <%}  %>
 >
 <%=ResultSetX.getString("remark")%></a>
 </div>
 
 <div id='Node_<%= i %>_0' style='display: none' loaded='no'>
   正在加载 ...
 </div>
 <%
 i++;
 }
 %>
 </BODY>
 </HTML>
 
 
 
 <!-- SubTree.jsp -->
 <%@ page contentType ="text/html;charset=gb2312" %>
 <%@ page import="java.util.*;" %>
 <!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>
 <%
 String ParentNode = request.getParameter("PNode");
 int i;
 int j;
 String nSpace="";
 j= ParentNode.length()- ParentNode.replaceAll("_","").length();
 for (i=0;i<j;i++)
 nSpace = nSpace + "  ";
 String sHTML ="";
 i=0;
 
 java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 //  java.sql.Connection ConnectionX = java.sql.DriverManager.getConnection("jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\Resin\\doc\\examples\\Tree\\tree.mdb","admin", "");
 //  java.sql.Statement StatementX = ConnectionX.createStatement();
 java.sql.ResultSet ResultSetX = java.sql.DriverManager.getConnection("jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=e:\\resin-2.1.6\\doc\\examples\\Tree\\tree.mdb","admin", "").createStatement().executeQuery("select *,(select count(*) from tree where parentid =T.id ) as Children from tree T where parentid = " + request.getParameter("PID"));
 int children;
 int ID;
 while (ResultSetX.next())
 {    children=ResultSetX.getInt("children");
 ID=ResultSetX.getInt("id");
 sHTML = sHTML + "<div id='" + ParentNode + "_" + (i + 1) + "'>" + nSpace + "<a href='#'";
 if (children >0)
 sHTML = sHTML + " onClick='ExpandNode(" + ParentNode + "_" + (i + 1) + "," + ID + ")'>+";
 else sHTML = sHTML + ">-";
 sHTML = sHTML + "</a>\\n" + "<a href='#'";
 if (children >0)
 sHTML = sHTML + " onDblClick='ExpandNode(" + ParentNode + "_" + (i + 1) + "," + ID + ")'";
 sHTML = sHTML + ">" + ID + ": " + ResultSetX.getString("remark") + "</a></div>";
 if (children >0)
 sHTML = sHTML + "<div id='" + ParentNode + "_" + (i + 1) + "_0' style='display: none' loaded='no'>" + nSpace + "  正在加载 ...</div>";
 %>
 <% i++;
 }%>
 <BODY>
 <script>
 var x = eval('parent.' + '<%= ParentNode + "_0"%>' ) ;
 x.innerHTML="<%= sHTML %>";
 </script>
 </BODY>
 </HTML>
 
 
 bill-转自:csdn
 |