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. 阿里云centos7.x 打开80端口(转)

    本文转自:https://blog.csdn.net/tengqingyong/article/details/82805053 一 :阿里云centos7.x用iptables打开80端口 1.安装 ...

  2. 基于Centos搭建Python Web 环境搭建教程

    CentOS 7.2 64 位操作系统 安装 setuptools 工具 安装 因为之后我们需要安装 Django ,而 Django 需要用这个工具,所以我们需要先安装 setuptools 工具. ...

  3. 11G新特性 -- variable size extents

    AU是asm磁盘分配的基本单元.在oracle10g中,一个AU对应一个extent(这会增加对内存的使用),因为一个大的数据库如果含有大量的默认大小的AU,会导致数据库的share pool的大量使 ...

  4. openssl - 怎么打开POD格式的帮助文件

    原文链接: http://zhidao.baidu.com/link?url=47I6A0YGA9FnK6galKZ5sxPSZzFGRdng2qhACb4ToBuhuyMhdrwcYpZmNI28y ...

  5. EasyUI - DataGrid 去右边空白滚动条列

    在网上查了很长时间没有找到解决方法,干脆自已查看一下代码来解决吧,随是压缩过的,不过也还是好查的,工夫不负有心人,终于解决了,方法如下: 一.我们先让表格自适应宽度 <!DOCTYPE html ...

  6. MUI中等待框的H5实现

    MUI没有内置的那个弹出转圈圈的那个等待框,那个nativeui.showwaiting是只能用于app中的,不能用在H5网页中的,网上找了下,找到个别人已经写好的,自己 测试了下没问题,先记下来 @ ...

  7. Spring Boot 2.0 利用 Spring Security 实现简单的OAuth2.0认证方式2

    0.前言 经过前面一小节已经基本配置好了基于SpringBoot+SpringSecurity+OAuth2.0的环境.这一小节主要对一些写固定InMemory的User和Client进行扩展.实现动 ...

  8. MXNET:权重衰减-gluon实现

    构建数据集 # -*- coding: utf-8 -*- from mxnet import init from mxnet import ndarray as nd from mxnet.gluo ...

  9. Android 实时录音和回放,边录音边播放 (KTV回音效果)

    上一篇介绍了如何使用Mediarecorder来录音,以及播放录音.不过并没有达到我的目的,一边录音一边播放.今天就讲解一下如何一边录音一边播放.使用AndioRecord录音和使用AudioTrac ...

  10. 新的时代:今日三款新IM正式宣战微信!

    今天(2019年1月5日)是社交圈的大日子,在今天上午将有三款不同的社交软件进行发布会,王欣.张一鸣.罗永浩旗下公司三款社交产品于今日同日发布. 新的时代,共同挑战微信 2019年1月15日,张一鸣的 ...