表的结构
 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框架,

解决方案 »

  1.   

    如果是oracle数据库可以这样
    select * from table start with GROUPID='' connect by prior GROUPID=PARENTID//从根接点遍历子结点树型菜单可以找个js代码
      

  2.   

    我一直是用dtree  还不错..
      

  3.   

    dtree真的不错,就是可以动态的增删节点的!!!!
      

  4.   

    饿。。 这和框架貌似没啥关系。
    基本上都是sql操作。前抬基本上是ajax实现
      

  5.   

    谁能给个大概的思路啊 ,谢谢了。留个邮箱
    [email protected]
      

  6.   

    我自己写的代码:Group.java实体类,GroupImpl.java实现业务逻辑。index.jsp1.Group.javapackage com.gdcn.admin;public class Group {
    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!