这个ui用的一切都是json数据。树也是如此!

后台需要返回与格式匹配的json数据才能正确加载树。

页面定义一个ui:

  1. <ul id="messageInfoAddTree" class="easyui-tree" checkbox="true" data-options="lines:true" style="height:94%"></ul>

JS访问后台:

  1. //人员树
  2. $('#messageInfoAddTree').tree({
  3. url: "controller/crmMessageInfo/selectEditTree.json?rid=-1",
  4. loadFilter: function(data){
  5. return data;
  6. }
  7. });

后台实体Bean中需要的属性:

  1. public class EmployeeTree {
  2. private Integer id;  //人员编号
  3. private String text; //人员名称
  4. private Boolean checked = false; //是否选中
  5. private List<EmployeeTree> children; //子节点
  6. }

按照此种格式填充数据就能得到下面的结果:

获取已勾选的节点数据:

  1. var nodes = $('#messageInfoAddTree').tree('getChecked');

还有一个功能,就是让tree的所有节点都勾选上或者取消勾选,在api中找了一下有一个方法:

check target 选中指定节点。

那我们只能是选中根节点后,实现全选。

getRoot none 获取根节点,返回节点对象。

全选:

  1. var root = $('#messageInfoAddTree').tree('getRoot');
  2. $("#messageInfoAddTree").tree('check',root.target);

取消选择:

  1. var root = $('#messageInfoAddTree').tree('getRoot');
  2. $("#messageInfoAddTree").tree('uncheck',root.target);

Jquery easyui tree Api:

Tree(树)

使用$.fn.tree.defaults重写默认值对象。

树控件在web页面中一个将分层数据以树形结构进行显示。它提供用户展开、折叠、拖拽、编辑和异步加载等功能。

依赖关系

使用案例

树控件使用<ul>元素定义。标签能够定义分支和子节点。节点都定义在<ul>列表内的<li>元素中。以下显示的元素将被用作树节点嵌套在<ul>元素中。

  1. <ul id="tt" class="easyui-tree">
  2. <li>
  3. <span>Folder</span>
  4. <ul>
  5. <li>
  6. <span>Sub Folder 1</span>
  7. <ul>
  8. <li>
  9. <span><a href="#">File 11</a></span>
  10. </li>
  11. <li>
  12. <span>File 12</span>
  13. </li>
  14. <li>
  15. <span>File 13</span>
  16. </li>
  17. </ul>
  18. </li>
  19. <li>
  20. <span>File 2</span>
  21. </li>
  22. <li>
  23. <span>File 3</span>
  24. </li>
  25. </ul>
  26. </li>
  27. <li>
  28. <span>File21</span>
  29. </li>
  30. </ul>

树控件也可以定义在一个空<ul>元素中并使用Javascript加载数据。

  1. <ul id="tt"></ul>
  1. $('#tt').tree({
  2. url:'tree_data.json'
  3. });

使用loadFilter函数处理来自Web Services的JSON数据。

  1. $('#tt').tree({
  2. url: ...,
  3. loadFilter: function(data){
  4. if (data.d){
  5. return data.d;
  6. } else {
  7. return data;
  8. }
  9. }
  10. });

树控件数据格式化

每个节点都具备以下属性:

  • id:节点ID,对加载远程数据很重要。
  • text:显示节点文本。
  • state:节点状态,'open' 或 'closed',默认:'open'。如果为'closed'的时候,将不自动展开该节点。
  • checked:表示该节点是否被选中。
  • attributes: 被添加到节点的自定义属性。
  • children: 一个节点数组声明了若干节点。

一些案例:

  1. [{
  2. "id":1,
  3. "text":"Folder1",
  4. "iconCls":"icon-save",
  5. "children":[{
  6. "text":"File1",
  7. "checked":true
  8. },{
  9. "text":"Books",
  10. "state":"open",
  11. "attributes":{
  12. "url":"/demo/book/abc",
  13. "price":100
  14. },
  15. "children":[{
  16. "text":"PhotoShop",
  17. "checked":true
  18. },{
  19. "id": 8,
  20. "text":"Sub Bookds",
  21. "state":"closed"
  22. }]
  23. }]
  24. },{
  25. "text":"Languages",
  26. "state":"closed",
  27. "children":[{
  28. "text":"Java"
  29. },{
  30. "text":"C#"
  31. }]
  32. }]

异步树控件

树控件内建异步加载模式的支持,用户先创建一个空的树,然后指定一个服务器端,执行检索后动态返回JSON数据来填充树并完成异步请求。例子如下:

  1. <ul class="easyui-tree" data-options="url:'get_data.php'"></ul>

树控件读取URL。子节点的加载依赖于父节点的状态。当展开一个封闭的节点,如果节点没有加载子节点,它将会把节点id的值作为http请求参数并命名为'id',通过URL发送到服务器上面检索子节点。

下面是从服务器端返回的数据。

  1. [{
  2. "id": 1,
  3. "text": "Node 1",
  4. "state": "closed",
  5. "children": [{
  6. "id": 11,
  7. "text": "Node 11"
  8. },{
  9. "id": 12,
  10. "text": "Node 12"
  11. }]
  12. },{
  13. "id": 2,
  14. "text": "Node 2",
  15. "state": "closed"
  16. }]

节点1和节点2是封闭的,当展开节点1的时候将直接显示它的子节点。当展开节点2的时候它将发送值(2)到服务器获取子节点。

属性

属性名 属性值类型 描述 默认值
url string 检索远程数据的URL地址。 null
method string 检索数据的HTTP方法。(POST / GET) post
animate boolean 定义节点在展开或折叠的时候是否显示动画效果。 false
checkbox boolean 定义是否在每一个借点之前都显示复选框。 false
cascadeCheck boolean 定义是否层叠选中状态。 true
onlyLeafCheck boolean 定义是否只在末级节点之前显示复选框。 false
lines boolean 定义是否显示树控件上的虚线。 false
dnd boolean 定义是否启用拖拽功能。 false
data array 节点数据加载。

$('#tt').tree({
data: [{
text: 'Item1',
state: 'closed',
children: [{
text: 'Item11'
},{
text: 'Item12'
}]
},{
text: 'Item2'
}]
});
null
formatter function(node) 定义如何渲染节点的文本。

代码示例:

$('#tt').tree({
formatter:function(node){
return node.text;
}
});
false
loader function(param,success,error) 定义如何从远程服务器加载数据。返回false可以忽略本操作。该函数具备以下参数:
param:发送到远程服务器的参数对象。
success(data):当检索数据成功的时候调用的回调函数。
error():当检索数据失败的时候调用的回调函数。
json loader
loadFilter function(data,parent) 返回过滤过的数据进行展示。返回数据是标准树格式。该函数具备以下参数:
data:加载的原始数据。
parent: DOM对象,代表父节点。
 

事件

很多事件的回调函数都包含'node'参数,其具备如下属性:

  • id:绑定节点的标识值。
  • text:显示的节点文本。
  • iconCls:显示的节点图标CSS类ID。
  • checked:该节点是否被选中。
  • state:节点状态,'open' 或 'closed'。
  • attributes:绑定该节点的自定义属性。
  • target:目标DOM对象。
事件名 事件参数 描述
onClick node

在用户点击一个节点的时候触发。

代码示例:

$('#tt').tree({
onClick: function(node){
alert(node.text); // 在用户点击的时候提示
}
});
onDblClick node 在用户双击一个节点的时候触发。
onBeforeLoad node, param 在请求加载远程数据之前触发,返回false可以取消加载操作。
onLoadSuccess node, data 在数据加载成功以后触发。
onLoadError arguments 在数据加载失败的时候触发,arguments参数和jQuery的$.ajax()函数里面的'error'回调函数的参数相同。
onBeforeExpand node 在节点展开之前触发,返回false可以取消展开操作。
onExpand node 在节点展开的时候触发。
onBeforeCollapse node 在节点折叠之前触发,返回false可以取消折叠操作。
onCollapse node 在节点折叠的时候触发。
onBeforeCheck node, checked 在用户点击勾选复选框之前触发,返回false可以取消选择动作。(该事件自1.3.1版开始可用)
onCheck node, checked 在用户点击勾选复选框的时候触发。
onBeforeSelect node 在用户选择一个节点之前触发,返回false可以取消选择动作。
onSelect node 在用户选择节点的时候触发。
onContextMenu e, node

在右键点击节点的时候触发。

代码示例:

// 右键点击节点并显示快捷菜单
$('#tt').tree({
onContextMenu: function(e, node){
e.preventDefault();
// 查找节点
$('#tt').tree('select', node.target);
// 显示快捷菜单
$('#mm').menu('show', {
left: e.pageX,
top: e.pageY
});
}
}); // 右键菜单定义如下:
<div id="mm" class="easyui-menu" style="width:120px;">
<div onclick="append()" data-options="iconCls:'icon-add'">追加</div>
<div onclick="remove()" data-options="iconCls:'icon-remove'">移除</div>
</div>
onBeforeDrag node 在开始拖动节点之前触发,返回false可以拒绝拖动。(该事件自1.3.2版开始可用)
onStartDrag node 在开始拖动节点的时候触发。(该事件自1.3.2版开始可用)
onStopDrag node 在停止拖动节点的时候触发。(该事件自1.3.2版开始可用)
onDragEnter target, source 在拖动一个节点进入到某个目标节点并释放的时候触发,返回false可以拒绝拖动。
target:释放的目标节点元素。
source:开始拖动的源节点。
(该事件自1.3.2版开始可用)
onDragOver target, source 在拖动一个节点经过某个目标节点并释放的时候触发,返回false可以拒绝拖动。
target:释放的目标节点元素。
source:开始拖动的源节点。
(该事件自1.3.2版开始可用)
onDragLeave target, source 在拖动一个节点离开某个目标节点并释放的时候触发,返回false可以拒绝拖动。
target:释放的目标节点元素。
source:开始拖动的源节点。
(该事件自1.3.2版开始可用)
onBeforeDrop target, source, point 在拖动一个节点之前触发,返回false可以拒绝拖动。
target:释放的目标节点元素。
source:开始拖动的源节点。
point:表示哪一种拖动操作,可用值有:'append','top' 或 'bottom'。
(该事件自1.3.3版开始可用)
 
onDrop target, source, point 当节点位置被拖动时触发。
target:DOM对象,需要被拖动动的目标节点。
source:源节点。
point:表示哪一种拖动操作,可用值有:'append','top' 或 'bottom'。
onBeforeEdit node 在编辑节点之前触发。
onAfterEdit node 在编辑节点之后触发。
onCancelEdit node 在取消编辑操作的时候触发。

方法

方法名 方法参数 描述
options none 返回树控件属性。
loadData data 读取树控件数据。
getNode target 获取指定节点对象。
getData target 获取指定节点数据,包含它的子节点。
reload target 重新载入树控件数据。
getRoot none 获取根节点,返回节点对象。
getRoots none 获取所有根节点,返回节点数组。
getParent target 获取父节点,'target'参数代表节点的DOM对象。
getChildren target 获取所有子节点,'target'参数代表节点的DOM对象。
getChecked state 获取所有选中的节点。'state'可用值有:'checked','unchecked','indeterminate'。如果'state'未指定,将返回'checked'节点。

代码示例:

var nodes = $('#tt').tree('getChecked');	// get checked nodes
var nodes = $('#tt').tree('getChecked', 'unchecked'); // 获取未选择节点
var nodes = $('#tt').tree('getChecked', 'indeterminate'); // 获取不确定的节点
译者注:(1.3.4新增获取方式)

var nodes = $('#tt').tree('getChecked', ['unchecked','indeterminate']);
getSelected none 获取选择节点并返回它,如果未选择则返回null。
isLeaf target 判断指定的节点是否是叶子节点,target参数是一个节点DOM对象。
find id

查找指定节点并返回节点对象。

代码示例:

// 查找一个节点并选择它
var node = $('#tt').tree('find', 12);
$('#tt').tree('select', node.target);
select target 选择一个节点,'target'参数表示节点的DOM对象。
check target 选中指定节点。
uncheck target 取消选中指定节点。
collapse target 折叠一个节点,'target'参数表示节点的DOM对象。
expand target 展开一个节点,'target'参数表示节点的DOM对象。在节点关闭或没有子节点的时候,节点ID的值(名为'id'的参数)将会发送给服务器
请求子节点的数据。
collapseAll target 折叠所有节点。
expandAll target 展开所有节点。
expandTo target 打开从根节点到指定节点之间的所有节点。
scrollTo target 滚动到指定节点。(该方法自1.3.4版开始可用)
append param

追加若干子节点到一个父节点,param参数有2个属性:
parent:DOM对象,将要被追加子节点的父节点,如果未指定,子节点将被追加至根节点。
data:数组,节点数据。

代码示例:

// 追加若干个节点并选中他们
var selected = $('#tt').tree('getSelected');
$('#tt').tree('append', {
parent: selected.target,
data: [{
id: 23,
text: 'node23'
},{
text: 'node24',
state: 'closed',
children: [{
text: 'node241'
},{
text: 'node242'
}]
}]
});
toggle target 打开或关闭节点的触发器,target参数是一个节点DOM对象。
insert param 在一个指定节点之前或之后插入节点,'param'参数包含如下属性:
before:DOM对象,在某个节点之前插入。
after:DOM对象,在某个节点之后插入。
data:对象,节点数据。

下面的代码展示了如何将一个新节点插入到选择的节点之前:

var node = $('#tt').tree('getSelected');
if (node){
$('#tt').tree('insert', {
before: node.target,
data: {
id: 21,
text: 'node text'
}
});
}
译者注:(1.3.4新增获取方式)
var node = $('#tt').tree('getSelected');
if (node){
$('#tt').tree('insert', {
before: node.target,
data: [{
    id: 23,
    text: 'node23'
                },{
         text: 'node24',
                    state: 'closed',
    children: [{
text: 'node241'
    },{
text: 'node242'
    }]
                }]
});
}
remove target 移除一个节点和它的子节点,'target'参数是该节点的DOM对象。
pop target 移除一个节点和它的子节点,该方法跟remove方法一样,不同的是它将返回被移除的节点数据。
update param 更新指定节点。'param'参数包含以下属性:
target(DOM对象,将被更新的目标节点),id,text,iconCls,checked等。

代码示例:

// 更新选择的节点文本
var node = $('#tt').tree('getSelected');
if (node){
$('#tt').tree('update', {
target: node.target,
text: 'new text'
});
}
enableDnd none 启用拖拽功能。
disableDnd none 禁用拖拽功能。
beginEdit target 开始编辑一个节点。
endEdit target 结束编辑一个节点。
cancelEdit target 取消编辑一个节点。

Jquery easyui tree的使用的更多相关文章

  1. Jquery easyui Tree的简单使用

    Jquery easyui Tree的简单使用 Jquery easyui 是jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻 ...

  2. jquery easyui tree dialog

    <script type="text/javascript" src="<%=request.getContextPath()%>/include/ja ...

  3. Jquery EasyUI Tree .net实例

    图片: 针对tree: 数据库: CREATE TABLE [dbo].[SystemModel]( [Id] [,) NOT NULL, [Name] [nvarchar]() NULL, [Fat ...

  4. Jquery easyui tree 一些常见操作

    Tree: easyui tree的异步加载实现很简单,easyui的中文API文档中有实例(http://api.btboys.com/easyui/)——创建异步树形菜单,就是在tree node ...

  5. Jquery EasyUI Tree树形结构的Java实现(实体转换VO)

    前一阵做的OA项目,有一个是组织架构的树,因为是分开做的,我做的是Controller和页面,其他组做的Service和Dao,因为之前一直没有商量页面用什么框架做比较好,导致,Dao层取出来的数据都 ...

  6. JQuery EasyUI Tree组件的Bug记录

    记录一下使用项目中使用EasyUI遇到的bug,废话少说直接上菜  - _-(bug)..... bug ::   .netcore创建一个web应用时候,会自动引入jQuery库以及一些插件,但是在 ...

  7. JQuery EasyUI Tree

    Tree 数据转换 所有节点都包含以下属性: id:节点id,这个很重要到加载远程服务器数据 which is important to load remote data text: 显示的节点文本 ...

  8. jQuery EasyUI tree中state属性慎用

    EasyUI 1.4.4 tree控件中,如果是叶子节点,切忌把state设置为closed,否则该节点会加载整个tree,形成死循环 例如: json入下: [ { "checked&qu ...

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

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

随机推荐

  1. GCD中使用dispatch_after函数延迟处理任务

    在实际的开发中,经常会遇到想要在指定的时间间隔后执行某个处理 <一>在GCD中提供了dispatch_after函数来完成这一操作 dispatch_after(dispatch_time ...

  2. Objective-C之Category的使用

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  3. 一个SharePoint定时器 (SPJobDefinition)

    需要写一个自定义的sharepoint timer job, 目的是要定时到Site Collection Images这个List里检查图片的过期日期,如果即将过期的话,需要发送email到相关的人 ...

  4. Android程序入口以及项目文件夹的含义和使用总结—入门

    新接触一门程序或者开发框架,我一般都要先弄清楚程序的入口在哪里,程序怎么运行的:建立一个项目后,各个文件夹有什么作用以及如何使用等等.理清楚这些东西对以后开发是很有好处的,古话说得好,工欲善其事,必先 ...

  5. cocos2d-x图层以及显示对象的基本使用

    LogoNode: #ifndef LogoNode_hpp #define LogoNode_hpp #include <stdio.h> #include "cocos2d. ...

  6. 烂泥:ubuntu中使用virt-manager图形化新建虚拟机

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 上一篇文章介绍了,如何在ubuntu下安装KVM的虚拟机管理器virt-manager,这篇文章我们来介绍,如何在图形界面下使用virt-manager ...

  7. python enumerate 函数用法

    enumerate字典上是枚举.列举的意思.   C语言中关键字enum也是enumerate的缩写.   python中enumerate方法,返回一个enumerate类型.参数一般是可以遍历的的 ...

  8. HADOOP namenode HA

    参考的文章:http://www.cnblogs.com/smartloli/p/4298430.html 当然,在操作的过程中,发现与上述文章中描述的还是有一些小小的区别. 配置好后,start-d ...

  9. 利用python爬取海量疾病名称百度搜索词条目数的爬虫实现

    实验原因: 目前有一个医疗百科检索项目,该项目中对关键词进行检索后,返回的结果很多,可惜结果的排序很不好,影响用户体验.简单来说,搜索出来的所有符合疾病中,有可能是最不常见的疾病是排在第一个的,而最有 ...

  10. HDU 4782 Beautiful Soup --模拟

    题意: 将一些分散在各行的HTML代码整理成标签树的形式. 解法: 模拟,具体见代码的讲解. 开始没考虑 '\t' .. 代码: #include <iostream> #include ...