欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jQuery zTree插件快速实现目录树

程序员文章站 2023-11-30 19:57:58
ztree是jquery的一个开源树形目录的插件,用来快速构建网站的树形目录结构,并且提供了功能丰富,利于扩展的api。 jquery ztree官网 只要引入jque...

ztree是jquery的一个开源树形目录的插件,用来快速构建网站的树形目录结构,并且提供了功能丰富,利于扩展的api。

jquery ztree官网

只要引入jquery和ztree的库js,然后给ztree提供需要的json数据,并且设置好ztress的属性,就可以即刻展示出树形目录。

总结下来,要使用ztree的话,必须要完成以下几步:

1. 引入库文件

jquery.js

ztree.js

ztree.css

2. 获取数据

你要思考数据来源问题了。

如果要自己从数据库查询树形结构这时候你需要知道oracle的递归查询connect by:oracle中使用start with...connect by prior递归查询树形结构。递归查询简单来讲就是一个表中要具备2个基本字段:id和pid(子节点和父节点id),使用关键字connect by prior来连接id和pid,start with定义数据行查询的初始点,由此获取一棵或者多棵树的树形结构。(这里顺便回忆一下sql里的分组查询group by,跟connect by区分开来。)

拿实际项目举例,项目中要获取如下的目录树:

jQuery zTree插件快速实现目录树

执行以下sql:

select level, t.dir_id, t.dir_name, t.parent_id
 from t_res_owner t
 where t.is_folder = '0'
 start with 1 = 1
    and t.parent_id = '0'
    and t.owner_type = '0'
    and t.user_id = '136ac7a7ad624692a5b94d93e0634952'
connect by prior t.dir_id = t.parent_id
 order by level asc, t.dir_name asc;

执行结果:

jQuery zTree插件快速实现目录树

3. 封装json输入

下面一段引用ztree官网demo的描述:

jQuery zTree插件快速实现目录树

那么,从接口获取到存放数据的list之后,按照如上组织json给ztree使用即可,参考以下代码:

jsonarray tree = new jsonarray();
  list<resowner> list = resownerservice.selectfoldertree(owner);
  jsonobject obj = null;
  for(resowner resowner : list){
  obj = new jsonobject();
  obj.put("id", resowner.getdirid());
  obj.put("pid", resowner.getparentid());
  obj.put("name", resowner.getdirname().length() > 24?resowner.getdirname().substring(0,24)+"...":resowner.getdirname());
  obj.put("icon", sysconf.getstring("webapp.jspconfigurl") + "common/css/ztreestyle2/img/leaf_ico.png");
  tree.add(obj);
  }
  result.put("success", new boolean(true));
  result.put("data", tree);
  return result;

4. 设置ztree属性

var znodes = data.data;
  var setting = {
   view : {
   showline: false,
   showicon : true
   },
   data : {
   simpledata : {
    enable : true
   }
   },
   edit: {
   enable: true,
   showremovebtn: true,
   showrenamebtn: true,
   removetitle: "删除",
   renametitle: "重命名"
   },
   callback: {
   onclick: ztreeonclick,
   beforeremove: ztreebeforeremove,
   onrename: ztreeonrename
   }
  };
  //初始化网盘结构树
  $.fn.ztree.init($("#treedemo_mydoc"), setting, znodes);
<div class="ztreedemobackground2 left" style="width:168px;">
     <ul id="treedemo_mydoc" class="ztree2" style="width:168px;height: 168px"></ul>
 </div>

可以在setting.callback里面可以设置各种回调函数,用以实现更加复杂的功能,详见ztree api文档经过以上步骤,用ztree实现一个具有基本功能的目录树就完成了。

总结:

实现一个基本功能的目录树其实很简单,说白了就是要提供ztree需要的json数据,然后设置一些属性,其他工作就交给ztree插件来完成了,其难点在于用oracle的connect by获取数据源,另外,页面交互也比较考验javascript功底,毕竟很多地方是需要异步加载来提高用户体验。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。