zoukankan      html  css  js  c++  java
  • easyui---tree异步加载

    1、ul li的多级列表的html代码tree

    2、利用jquery

      <ul id="tt"></ul>  
      $('#tt').tree({   
     url:'tree_data.json'    //会发送异步请求返回tree数据
    });  
    tree实体类:
    public
    class Tree { private int id ; private String name ; private String url ; private int checked ; private String icon ; private int parent_id ; public int getId() { return id; } public void setId(int id) { this.id = id; } 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 int getChecked() { return checked; } public void setChecked(int checked) { this.checked = checked; } public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; } public int getParent_id() { return parent_id; } public void setParent_id(int parent_id) { this.parent_id = parent_id; }
    treeVO 返回jsontree格式,必须这种形式tree,才能渲染成树:
    public
    class TreeVO { private int id; private String text; private int parent_id; private String icon ; private String state ; private Map<String,Object> map=new HashMap<String ,Object>(); //用个map接收自定义属性,必须map,转为json后,是{"a":"","b":..}这种格式,同时具有可扩展性 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getText() { return text; } public void setText(String text) { this.text = text; } public int getParent_id() { return parent_id; } public void setParent_id(int parent_id) { this.parent_id = parent_id; } public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; } public String getState() { return state; } public void setState(String state) { this.state = state; } public Map<String, Object> getMap() { return map; } public void setMap(Map<String, Object> map) { this.map = map; } }
    import com.bjsxt.dto.TreeVO;
    
    public interface TreeDao {
    
        List<TreeVO> getTreeByParentId(String id);
    
    }
    public class TreeDaoImpl implements TreeDao {
    
        @Override
        public List<TreeVO> getTreeByParentId(String id) {
            String sql;
            if(id==null || id==""){ //刚开始页面加载完成之后,页面出现根节点,这时,前台不带参数id,只有点击closed的节点才会发送一个请求,携带id




    int pid=2340; sql ="select * from tree where parent_id ="+2340; System.out.println(sql); }else{

    //点击这些关闭的节点时才会发送一个url,同时携带这个节点的id,为什么easyui树高效,dtree不行,dtree是一打开页面加载所有的节点,而easyUi是点击节点才会异步发送一个请求,获取该节点下直接子节点渲染成树

    int pid=Integer.valueOf(id); sql ="select * from tree where parent_id ="+pid; System.out.println(sql); } Connection conn = DBUtils.createConn(); PreparedStatement ps = DBUtils.getPs(conn, sql); try { ResultSet rs = ps.executeQuery(); List<Tree> treeList =new ArrayList<Tree>(); while(rs.next()){ Tree tree=new Tree(); tree.setId(rs.getInt("id")); tree.setChecked(rs.getInt("checked")); tree.setIcon(rs.getString("icon")); tree.setName(rs.getString("name")); tree.setParent_id(rs.getInt("parent_id")); tree.setUrl(rs.getString("url")); treeList.add(tree); } List<TreeVO> treeVOlist = this.tochange(treeList); System.out.println(treeList+"treelist"); return treeVOlist; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } private List<TreeVO> tochange(List<Tree> treeList){ List<TreeVO> treeVOlist =new ArrayList<TreeVO>(); for (Tree tree : treeList) { TreeVO treeVO =new TreeVO(); treeVO.setId(tree.getId()); List<Tree> tls = this.distinguish(tree.getId()); if(tls.isEmpty()){ treeVO.setState("open"); }else{ treeVO.setState("closed"); } treeVO.setIcon(tree.getIcon()); treeVO.setParent_id(tree.getParent_id()); treeVO.setText(tree.getName()); Map<String,Object> hashMap=new HashMap<String,Object>(); hashMap.put("url", ""); treeVO.setMap(hashMap); treeVOlist.add(treeVO); } System.out.println(treeList+"treelist1"); return treeVOlist; } private List<Tree> distinguish(int id){//判断节点下面有没有子节点,有的话,下面的子节点不为空,没有的话就是叶子节点,这时会自动渲染成

        
                String sql ="select * from tree where parent_id ="+id;
        
            Connection conn = DBUtils.createConn();
            PreparedStatement ps = DBUtils.getPs(conn, sql);
            try {
                ResultSet rs = ps.executeQuery();
                List<Tree> treeList =new ArrayList<Tree>();
                while(rs.next()){
                    Tree tree=new Tree();
                    tree.setId(rs.getInt("id"));
                    tree.setChecked(rs.getInt("checked"));
                    tree.setIcon(rs.getString("icon"));
                    tree.setName(rs.getString("name"));
                    tree.setParent_id(rs.getInt("parent_id"));
                    tree.setUrl(rs.getString("url"));
                    treeList.add(tree);
                }
            
                return treeList;
                
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }        
            return null;
        }
    }
    @WebServlet("/tree")
    public class Tree extends HttpServlet {
        private static final long serialVersionUID = 1L;
      private TreeDao treeDao =new TreeDaoImpl();
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String method = request.getParameter("method");
            if(method.equals("getTree")){
                getTree(request,response);
                
            }
            
            
        }
    
        private void getTree(HttpServletRequest request, HttpServletResponse response) {
            String id = request.getParameter("id");
            List<TreeVO> treeList=treeDao.getTreeByParentId(id);
            response.setContentType("text/html;charset=utf-8");
            try {
                response.getWriter().write(JSONArray.fromObject(treeList).toString());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
    
    }

     下面的代码多余的:

    不需要转化int,拼接的sql,就是按照就是按照int,如果用字符串还需要在sql中''

        if(id==null || id==""){
                int pid=2340;  //不需要
                 sql ="select * from tree where parent_id ="+2340;
                 System.out.println(sql);
                
            }else{
                int pid=Integer.valueOf(id);//不需要
                sql ="select * from tree where parent_id ="+pid;
                System.out.println(sql);
            }

    -----

  • 相关阅读:
    87后的我
    meta标签中的httpequiv属性
    System.IO.Directory.GetCurrentDirectory与System.Windows.Forms.Application.StartupPath的用法
    递归方法重现
    实现控件的随意拖动
    Sql Server 2005 如何自动备份数据库
    用C#打开Windows自带的图片传真查看器
    配置SQL Server2005以允许远程访问
    Gridview控件有关的一些设置
    Add the Child Pane to Root.plist in the setting.bundlle
  • 原文地址:https://www.cnblogs.com/fpcbk/p/9911245.html
Copyright © 2011-2022 走看看