表的结构
GROUPID NUMBER(11) not null 组织ID
GROUP_NAME VARCHAR2(255) default '' not null 组织名称
TYPE_ID NUMBER(1) default 0 组织类型,0-4,公司、分公司、部门、科室、中心
ORDERID NUMBER default 0 用于排序
GROUP_LAYER NUMBER(2) default 0 用显层数
PARENTID NUMBER(9) default 0 上一级组织ID
ISUSE NUMBER(1) default 1 not null 是否生效在用
不适用ssh框架,
GROUPID NUMBER(11) not null 组织ID
GROUP_NAME VARCHAR2(255) default '' not null 组织名称
TYPE_ID NUMBER(1) default 0 组织类型,0-4,公司、分公司、部门、科室、中心
ORDERID NUMBER default 0 用于排序
GROUP_LAYER NUMBER(2) default 0 用显层数
PARENTID NUMBER(9) default 0 上一级组织ID
ISUSE NUMBER(1) default 1 not null 是否生效在用
不适用ssh框架,
select * from table start with GROUPID='' connect by prior GROUPID=PARENTID//从根接点遍历子结点树型菜单可以找个js代码
基本上都是sql操作。前抬基本上是ajax实现
[email protected]
private int groupID = -1;
private String groupName=null;
private int typeID;
private int orderID;
private int groupLayer;
private int parentID = -1;
private int isUse;
public int getGroupID() {
return groupID;
}
public void setGroupID(int groupID) {
this.groupID = groupID;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public int getTypeID() {
return typeID;
}
public void setTypeID(int typeID) {
this.typeID = typeID;
}
public int getOrderID() {
return orderID;
}
public void setOrderID(int orderID) {
this.orderID = orderID;
}
public int getGroupLayer() {
return groupLayer;
}
public void setGroupLayer(int groupLayer) {
this.groupLayer = groupLayer;
}
public int getParentID() {
return parentID;
}
public void setParentID(int parentID) {
this.parentID = parentID;
}
public int getIsUse() {
return isUse;
}
public void setIsUse(int isUse) {
this.isUse = isUse;
}
public Group() {
}
}2.GroupImpl.javapackage com.gdcn.admin;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;import org.apache.log4j.Logger;import com.gdcn.database.ConnectionManager;public class GroupImpl {
private static Logger logger = Logger.getLogger(GroupImpl.class);
public static List retrieveNodeInfos(){
List list = new ArrayList();
Connection conn = null ;
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
conn = ConnectionManager.getConnection();
String sql = "select * FROM tgroup WHERE isuse=1";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs!=null && rs.next()){
Group group = new Group();
int i =1;
group.setGroupID(rs.getInt(i++));
group.setGroupName(rs.getString(i++));
group.setTypeID(rs.getInt(i++));
group.setOrderID(rs.getInt(i++));
group.setGroupLayer(rs.getInt(i++));
group.setParentID(rs.getInt(i++));
list.add(group);
}
}catch(Exception e){
System.out.println(e);
logger.error(e);
}finally {
ConnectionManager.closeObject(conn, pstmt, rs);
}
return list;
}
public static String createTreeInfo(List alist){
StringBuffer contents = new StringBuffer();
contents.append("<script type=\"text/javascript\">\n");
contents.append("d = new dTree('d');\n");
Group group =null;
for(int max = alist.size(),i=0;i<max;i++){
group = (Group)alist.get(i);
contents.append("d.add("+group.getGroupID()+",");
contents.append(group.getParentID()+",");
contents.append("'"+group.getGroupName()+"'");
contents.append(");\n");
}
contents.append("document.write(d);\n");
contents.append("</script>");
return contents.toString();
}
public String getMenuJS(){
List list = GroupImpl.retrieveNodeInfos();
String js = GroupImpl.createTreeInfo(list);
return js;
}
public static void main(String[] args) {
List list = GroupImpl.retrieveNodeInfos();
System.out.println(GroupImpl.createTreeInfo(list));
}可以运行代码看能否生成如下类似代码:
<script type="text/javascript">
d = new dTree('d');
d.add(1,0,'云南电信');
d.add(11,1,'省公司本部');
d.add(12,1,'昆明分公司');
d.add(121,12,'公司领导');
d.add(122,12,'综合管理部');
d.add(1221,122,'新闻中心');
d.add(1222,122,'小车班');
d.add(1223,122,'档案室');
d.add(123,12,'计划财务部');
d.add(124,12,'人力资源部');
document.write(d);
</script>
3.index.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%@ page contentType="text/html; charset=GBK" language="java"%>
<%@ page import="com.gdcn.admin.*"%>
<html>
<head>
<title>Tree</title>
<link rel="StyleSheet" href="dtree.css" type="text/css" />
<script type="text/javascript" src="dtree.js"></script>
</head>
<body>
<div class='dtree'>
<%
GroupImpl gl = new GroupImpl();
System.out.println(gl.getMenuJS());
out.print(gl.getMenuJS());
%>
</div>
</body>
</html>
4.附带数据库设置,
GROUPID GROUPNAME PARENTID
1 云南电信 0
11 省公司本部 1
12 昆明公司 1
....
5.修改tree.js代码
找到function dtree()下面的this.root = new Node(-1);
因为我设置数据库的根为0,所以我改成了 this.root = new Node(0);
6.enjoy yourself!