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=;
sql ="select * from tree where parent_id ="+;
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=; //不需要
sql ="select * from tree where parent_id ="+;
System.out.println(sql); }else{
int pid=Integer.valueOf(id);//不需要
sql ="select * from tree where parent_id ="+pid;
System.out.println(sql);
}

-----

easyui---tree异步加载的更多相关文章

  1. spring mvc easyui tree 异步加载树

    使用spring mvc 注解 异步加载一棵树 jsp: <ul id="orgInfoTree"></ul> $(function(){ loadOrgT ...

  2. jquery easyui tree异步加载子节点

    easyui中的树可以从标记中建立,也可以通过指定一个URL属性读取数据建立.如果想建立一棵异步树,需要为每个节点指定一个id属性值,这样在加载数据时会自动向后台传递id参数. <ul id=& ...

  3. MVC4中EasyUI Tree异步加载JSON数据生成树

      1,首先构造tree接受的格式化数据结构MODEL /// <summary> /// 定义EasyUI树的相关数据,方便控制器生成Json数据进行传递 /// </summar ...

  4. easyui datagrid 异步加载数据时滚动条有时会自动滚到最底部的问题

    在使用easyui 的datagrid异步加载数据时发现滚动条有时会自动滚到最底部.经测试发现,如果加载数据前没有选中行则不会出现这个问题.这样我们可以在重新异步加载数据前取消选中行就可以避免这个问题 ...

  5. EasyUI实现异步加载tree(整合Struts2)

    首先jsp页面有一ul用于展现Tree <ul id="mytree"></ul> 加载Tree <script type="text/ja ...

  6. jquery easyui tree动态加载子节点

    1.前端tree绑定时,使用onBeforeExpand事件:当节点展开时触发加载子节点,自动会向服务端发送请求:url为绑定url,参数为当前节点id this.tree = { method: ' ...

  7. 后台返回平铺数据,如何转换成树形json并渲染树形结构,ant tree 异步加载

    如何后台返回对象数组(平铺式) 1.根据字段标识(板块)获取根节点 ### initTreeData(dataOrg){ var resultArr=dataOrg[0] var secArr=[]; ...

  8. 【EasyUI学习-2】Easyui Tree的异步加载

    作者:ssslinppp       1. 摘要 2. tree的相关介绍 3. 异步加载tree数据,并实现tree的折叠展开 3.1 功能说明: 3.2 前台代码 3.3 后台代码 4. 其他 1 ...

  9. 玩转Web之easyui(二)-----easy ui 异步加载生成树节点(Tree),点击树生成tab(选项卡)

    关于easy ui 异步加载生成树及点击树生成选项卡,这里直接给出代码,重点部分代码中均有注释 前台: $('#tree').tree({ url: '../servlet/School_Tree?i ...

  10. EasyUI ComboTree无限层级异步加载示例

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="EasuUIDemoTree.a ...

随机推荐

  1. Vim命令相关

    在shell中,记住一些常用的vim命令,会在操作时候事半功倍. 光标移动 h,j,k,l,h #表示往左,j表示往下,k表示往右,l表示往上 Ctrl f #上一页 Ctrl b #下一页 w, e ...

  2. SpringBoot中配置起动时的数据库初始化角本

    一.简介 我们使用SpringBoot + JPA时,需要程序在启动时执行数据表的初始化或者数据库记录的初始化.一般数据表的初始化可以通过在Spring Boot的application.proper ...

  3. ORA-00959: tablespace 'TB01' does not exist

    当前的表空间如下: SQL> select name from v$tablespace; NAME ---------------------------------------------- ...

  4. c# 序列化BinaryFormatter、SoapFormatter和XmlSerializer的区别

    在C#中常见的序列化的方法主要也有三个:BinaryFormatter.SoapFormatter.XML序列化 1.BinaryFormatter 序列化 [Serializable] //如果要想 ...

  5. 设计模式C++实现——工厂模式

    软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径.设计模式中运用了面向对象编程语言的重要特性:封装.继承.多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累.最 ...

  6. Rplidar学习(四)—— ROS下进行rplidar雷达数据采集源码分析

    一.子函数分析 1.发布数据子函数 (1)雷达数据数据类型 Header header # timestamp in the header is the acquisition time of # t ...

  7. JavaBean之lombok

    参见:https://www.ibm.com/developerworks/cn/opensource/os-lombok/ http://blog.didispace.com/java-lombok ...

  8. easyui confirm提示框 调整显示位置

    方法一: $.messager.confirm("确认对话框","该客户已经存在!确定:查看该客户 ", function(r){ if(r){ alert(& ...

  9. 12C -- ORA-65048 ORA-65048

    创建common user的时候报错: $ sqlplus '/as sysdba' SQL*Plus: Release 12.2.0.1.0 Production on Tue Apr 18 11: ...

  10. 反射简化switch语句

    1. 一个简单工厂类 public class FactoryModule { public ModuleIntf getModule(String moduleType) { ModuleIntf ...