创建动态菜单树,菜单项从数据库中读取,效果如下图所示
尽量详细点,简单点

解决方案 »

  1.   

    一般都是数据库中存放有上下级关系的节点数据,读取出来以后直接绑定树控件的DataSource,从描述上看不出来你的是哪种情况
      

  2.   

    用dtree,代码如下
    .java:
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
    import com.ant.dao.Dtree;
    public class DBManager {
        private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        private static final String URL = "jdbc:sqlserver://localhost:8081;databaseName=tree";
        private static final String SA = "sa";
        private static final String PWD = "sqlpwd";
        private static Connection conn=null;
        // 打开连接
        public static void getConnection() {
            try {
                Class.forName(DRIVER);
                conn = DriverManager.getConnection(URL, SA, PWD);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        // 关闭连接
        public void closeConnection() {
            if (conn != null) {
                try {
                    if (!conn.isClosed()) {
                        conn.close();
                        conn = null;
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        // 执行在查询
        public static ResultSet executeQuery(String sql) {
            getConnection();
            Statement st;
            try {
                st = conn.createStatement();
                return st.executeQuery(sql);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return null;
        }
        // 得到所有的节点
        public static String getAll() {
            ResultSet rs = executeQuery("select * from dtree");
            List<Dtree> li = new ArrayList<Dtree>();
            Dtree d = new Dtree();
            try {
                //这里可以直接封装到 StringBuffer 中
                while (rs.next()) {
                    d = new Dtree();
                    d.setId(rs.getInt("id"));
                    d.setpId(rs.getInt("pid"));
                    d.setName(rs.getString("name"));
                    d.setUrl(rs.getString("url"));
                    d.setTitle(rs.getString("title"));
                    d.setTarget(rs.getString("target"));
                    d.setIcon(rs.getString("icon"));
                    d.setIconOpen(rs.getString("iconOpen"));
                    d.setOpenn(rs.getString("open"));
                    li.add(d);
                }
                StringBuffer contents = new StringBuffer();
                contents.append("d = new dTree('d');");
                for (Dtree tn : li) {
                    contents.append("\n");
                    contents.append("d.add('");
                    contents.append(tn.getId());
                    contents.append("','");
                    contents.append(tn.getpId());
                    contents.append("','");
                    contents.append(tn.getName());
                    contents.append("','");
                    contents.append(tn.getUrl());
                    contents.append("','");
                    contents.append(tn.getTitle());
                    contents.append("','");
                    contents.append(tn.getTarget());
                    contents.append("','");
                    contents.append(tn.getIcon());
                    contents.append("','");
                    contents.append(tn.getIconOpen());
                    contents.append("','");
                    contents.append(tn.getOpenn());
                    contents.append("');");
                    contents.append("\n");                
                }
                contents.append("document.write(d);");        
                return contents.toString();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return null;
        }
    }.jsp:
    <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
    <%@page import="com.ant.dao.DBManager"%>
    <script type="text/javascript" src="script/dtree.js"></script>
    <link rel="StyleSheet" href="script/dtree.css" type="text/css" />
    <script type="text/javascript">
         <%=DBManager.getAll() %>
    </script>提示错误:org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 6
    3: <script type="text/javascript" src="script/dtree.js"></script>
    4: <link rel="StyleSheet" href="script/dtree.css" type="text/css" />
    5: <script type="text/javascript">
    6:      <%=DBManager.getAll() %>
    7: </script> org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:555)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      

  3.   

    这个不就是extjs里的treepanel么?
    还是说有什么特殊要求?还是你想问前后台如何交互?
      

  4.   

    前段时间刚刚好做了个这个有关的项目,把源代码给你,带右键功能。
    http://download.csdn.net/detail/drr789/5018002