『壹』 jsP實現樹形菜單
1.你的設計有點不合理
2.不知道用什麼資料庫
建議:使用dtree或者xloadtree 這兩個是最常用的回樹形組件.
把表結構換答成一張表,加個欄位父id.
ID 名字 父ID
1 香煙 0
2 中華 1
3 中南海 1
4 酒 0
5 茅台 4
6 小茅台 5
如果資料庫是oracle的話,直接使用遞歸查詢
如果是其他資料庫,建議使用 xloadtree,點擊一下,會動態刷出子節點.ajax效果.
--------------------------------補充
那就推薦你用ajax的樹.
剛開始的時候只需要大類型
id name
1 煙
2 酒
小類表
id name pid
1 中華 1
2 中南海 1
3 茅台 2
取大類直接查.生成樹之後
每點擊一下容然後去查小類
比如點擊煙 把煙的id傳到後台id=1
然後查小類 select *from XXX where pid=1
那麼所有的小類就都出來了.
『貳』 jsp做級聯下拉菜單
這里有一個js的多級聯動下拉菜單
可以自定義位置和樣式 比較實用
裡面有教程和源碼
『叄』 哪位大俠可以幫我寫一段java代碼!是關於根據資料庫里的數據來形成一個動態樹形圖
這是代碼,你可以自己調試一下。
數據結構如下:
CREATE TABLE dtree (
id int,
pid int,
name varchar(200),
url varchar(200),
title varchar(200),
target varchar(200),
icon varchar(200),
iconopen varchar(200),
opened bit);
為了實現獲取資料庫變數功能,需要建立一個DTree類,並編譯生成CLASS文件,放入\WEB-INF\classes文件夾下。
DTree類代碼如下:
package work3;
public class DTree {
private int id;
private int pid;
private String name;
private String url;
private String title;
private String target;
private String icon;
private String iconOpen;
private int opened;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getIconOpen() {
return iconOpen;
}
public void setIconOpen(String iconOpen) {
this.iconOpen = iconOpen;
}
public int getOpened() {
return opened;
}
public void setOpened(int opened) {
this.opened = opened;
}
}
work3.jsp代碼如下:
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<%@ page import="java.sql.*"%>
<jsp:useBean id='settree' scope="application" class="work3.DTree" />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<link rel="StyleSheet" href="dtree.css" type="text/css" />
<script type="text/javascript" src="dtree.js"></script>
<title>dTree in MySQL</title>
</head>
<body>
<h2>
Example
</h2>
<div class="dtree">
<p>
<a href="javascript: d.openAll();">open all</a> |
<a href="javascript: d.closeAll();">close all</a>
</p>
<script type="text/javascript">
<!--
d = new dTree('d');
<%
//驅動程序名
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
//資料庫用戶名
String userName = "sa";
//密碼
String userPwd = "1";
//資料庫名
String dbName = "master";
//表名
String tableName = "dtree";
//連接字元串
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName="+dbName;
//載入驅動
Class.forName(driverName).newInstance();
//連接資料庫
java.sql.Connection conn = DriverManager.getConnection(url,userName,userPwd);
//得到Statement實例
java.sql.Statement statement = conn.createStatement();
//查詢數據
String sql = "select * from " + tableName;
//返回結果
java.sql.ResultSet rs = statement.executeQuery(sql);
//獲取變數
while (rs.next()) {
settree.setId(rs.getInt(1));
settree.setPid(rs.getInt(2));
settree.setName(rs.getString(3));
settree.setUrl(rs.getString(4));
settree.setTitle(rs.getString(5));
settree.setTarget(rs.getString(6));
settree.setIcon(rs.getString(7));
settree.setIconOpen(rs.getString(8));
settree.setOpened(rs.getInt(9));
if(settree.getPid()==0)
settree.setOpened(1);
%>
d.add(<%=settree.getId()%>,<%=settree.getPid()%>,'<%=settree.getName()%>','<%=settree.getUrl()%>','<%=settree.getTitle()%>','<%=settree.getTarget()%>','','',<%=settree.getOpened()%>);
<%
}
%>
document.write(d);
//-->
</script>
</div>
</body>
</html>
『肆』 jsp頁面動態載入數據
$.post("userManager!UserQuery.action",{pageNo:pageIndex},function(r){
r=r.replace(" ","\r\n");
jsonTwo=r;
varjson=eval("("+r+")");
$.each(json,function(k,v){
varhtml="";
html+="<tr>";
html+="<td>"+(i++)+"</td>";
html+="<td>"+v['userName']+"</td>";
html+="<td>"+v['quanxian']+"</td>";
html+="<td><ahref=javascript:quanxian("+v.id+")>設置許可權</a></td>";
html+="<td><ahref=javascript:deleteUser("+v.id+")>刪除</a></td>";
html+="</tr>";
$('#QueryTable').append(html);
});
});
一個簡單的小例子 不懂再問
『伍』 jsp中動態載入樹(json、jquery)
var jsonrpc;
var result;
function showInstitute( id ) {
if ($.trim($("#insList_"+id).html()) == "") {
result = jsonrpc.instituteByCollegeIdListBean.listInstituteByCollegeId(id);
if (result != null) {
var len = result.list.length;
str = "<ul class=\"insName\">";
for (var i = 0; i < len; i++) {
str += "<li ><a href=\"javascript:listCourse("+result.list[i].id+")\">";
str = str + "<h2>"+ result.list[i].name+"</h2>";
str = str + "</a></li>";
}
str += "</ul>";
//$('.insName').hide();//class來控制顯隱
//alert($('.insName'));
//alert($('.insName').length);
$('.insName').remove();
//$('.insName').each(function(i){$(this).remove();});
$("#insList_"+id).html(str);
}
} else {
$("#insList_"+id).html("");
}
}
onload="jsonrpc= new JSONRpcClient('${pageContext.request.contextPath}/JSON-RPC')
我試過了沒問題的,+分呀!!!