`
小杨学JAVA
  • 浏览: 904000 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JQuery EasyUI Tree 用法

 
阅读更多

转:http://www.cnblogs.com/easypass/archive/2012/12/27/2835219.html

Tree 数据转换

所有节点都包含以下属性:

  • id:节点id,这个很重要到加载远程服务器数据 which is important to load remote data
  • 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. }]    

 

异步加载树

tree 支持内置的异步加载模式,用户创建一个空的tree,然后定义一个远程服务器站点返回json数据用于填充tree来异步满足异步加载需求.例如:

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

tree的加载是通过URL  'get_data.php'站点.子节点的加载依赖于父节点的状态.当展开一个关闭节点,如果节点没有子节点加载,将发送节点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都是closed状态的,可以直接显示它们的子节点,当展开节点2时,发送值2到远程服务器检索子节点
这个教程创建异步的树click me!!!,展示如何写服务器端代码根据需求返回tree数据.

一、方法 

 

NameTypeDescriptionDefault
url string 一个从远程服务器检索数据的URL. null
method string 检索数据的http方法类型. post
animate boolean 定义当展开/折叠节点的时候是否显示效果. false
checkbox boolean 定义是否显示checkbox在所有节点之前. false
cascadeCheck boolean 定义是否级联选择. true
onlyLeafCheck boolean 定义是否仅仅只是在叶子节点显示checkbox. false
lines boolean 定义是否显示树线. false
dnd boolean 定义是否启用drag and drop. false
data array 这个节点数据将被加载.
$('#tt').tree({
	data: [{
		text: 'Item1',
		state: 'closed',
		children: [{
			text: 'Item11'
		},{
			text: 'Item12'
		}]
	},{
		text: 'Item2'
	}]
});
null
loader function(param,success,error) 定义如何从远程服务器加载数据.返回false将终止这个动作.这个函数提供以下参数:
param: 这个参数对象将传送给远程服务器.
success(data): 当检索数据成功之后的回调函数.
error(): 当检索数据出现异常的时候调用的回调函数.
json loader
loadFilter function(data,parent) 返回显示过滤后的数据. 返回的数据是标准的tree格式.这个函数提供以下参数:
data:装载的是原始数据.
parent: DOM 对象, 指定父节点.
 

 

二、事件

许多回调函数提供'node'参数, 都包含以下属性:

  • id: 绑定到节点的标识值.
  • text:显示文本.
  • iconCls: 显示icon的css样式.
  • checked: 节点是否选中.
  • state: 节点状态, 'open' 或者 'closed'.
  • attributes: 绑定到节点的自定义属性.
  • target: 目标 DOM 对象.
NameParametersDescription
onClick node 当用户点击节点的时候触发. 示例代码:
$('#tt').tree({
	onClick: function(node){
		alert(node.text);  // alert node text property when clicked
	}
});
onDblClick node 当用户双击一个节点的时候触发.
onBeforeLoad node, param 当一个请求加载数据在前触发, 返回false取消加载动作.
onLoadSuccess node, data 当数据加载成功之后触发.
onLoadError arguments 当数据加载失败触发,arguments参数和ajax jQuery 的'error'一样 .
onBeforeExpand node 节点展开之前触发,返回false取消展开动作.
onExpand node 当节点展开之后触发.
onBeforeCollapse node 节点折叠之前触发,返回false将取消折叠动作.
onCollapse node 当节点折叠之后触发.
onCheck node, checked 当用户点击checkbox的时候触发.
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'">Append</div>
	<div onclick="remove()" data-options="iconCls:'icon-remove'">Remove</div>
</div>
onDrop target, source, point 当节点被放置的时候触发.
target: DOM 对象,这个节点是被放置的目标.
source: 源节点.
point:指明drop操作,可用值有: 'append','top' or 'bottom'.
onBeforeEdit node 在编辑节点之前触发.
onAfterEdit node 编辑节点之后触发.
onCancelEdit node 取消编辑动作时候触发.

 

三、方法

NameParameterDescription
options none 返回tree 的options.
loadData data 加载tree数据.
getNode target 得到特定的节点对象.
getData target 得到特定节点数据, 包含其子节点.
reload target 重新加载tree数据.
getRoot none 得到根节点, 返回节点对象
getRoots none 得到根节点, 返回节点数组.
getParent target 得到父节点,target参数指明节点DOM对象.
getChildren target 得到子节点,target 参数指明节点DOM对象.
getChecked none 得到所有选中节点.
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对象,当节点的状态是closed的时候 和没有子节点,节点id值(参数命名为'id')将发送给服务器请求子节点数据.
collapseAll target 折叠所有节点.
expandAll target 展开所有节点.
expandTo target 展开从根节点到指定的节点 .
append param 附加一些子节点到父节点中. param参数有两个属性:
parent: DOM 对象,被添加到的父节点,如果没有分配,附加到根节点.
data: array, the nodes data. Code example:
// 添加一些节点到选择的节点
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 切换expanded/collapsed 节点的状态,target 参数指明节点DOM对象.
insert param 插入一个节点到特定节点的之前或之后.'param'参数包含以下属性:
before: DOM 对象,节点插入到之前.
after: DOM 对象, 节点插入到之后.
data: object, 节点数据.

以下代码展示,如何插入新节点到选择节点之前:

var node = $('#tt').tree('getSelected');
if (node){
	$('#tt').tree('insert', {
		before: node.target,
		data: {
			id: 21,
			text: 'node text'
		}
	});
}
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 启用 drag 和 drop 功能.
disableDnd none 禁用 drag 和drop 功能.
beginEdit target 开始编辑一个节点.
endEdit target 结束编辑一个节点.
cancelEdit target 取消编辑一个节点.
分享到:
评论

相关推荐

    jquery-easyui-tree学习

    jQuery EasyUI Tree的基础使用主要涉及以下几个方面: 1. **引入依赖**: 在HTML页面中,我们需要引入jQuery、jQuery EasyUI的核心CSS和JS文件,以及Tree组件的特定CSS和JS文件。确保这些资源已正确加载,是使用...

    JqueryEasyUI Tree 动态加载,稍作修改就可以用了

    本篇文章将深入探讨如何实现jQuery EasyUI Tree的动态加载,并根据提供的标题和描述,分享一些可能的实现方法。 动态加载是一种优化技术,可以提高用户体验,避免一次性加载大量数据导致页面响应变慢。对于Tree组件...

    jQuery EasyUI tree增加搜索功能的实现方法

    使用方法如下: * $("#treeId").tree("search", searchText); * 其中,treeId为easyui tree的根UL元素的ID,searchText为检索的文本。 * 如果searchText为空或"",将恢复展示所有节点为正常状态 */ (function($)...

    easyui tree扁平化扩展,不用再为children嵌套结构烦恼

    具体来说,我们将修改EasyUI Tree的`loadFilter`方法,使其能够自动处理扁平化的数据结构,并将其转换成适合EasyUI Tree使用的格式。 #### 五、实现原理 下面是对EasyUI Tree进行扁平化扩展的核心逻辑: 1. **定义...

    jquery easyui 帮助文档

    jQuery EasyUI 的 API 文档通常会详细说明每个组件的使用方法、配置选项、事件以及方法。例如,Datagrid 的 API 可能会涵盖如何加载数据、如何处理行点击事件、如何进行数据排序等。开发者可以通过查阅API文档了解...

    jqueryEasyUI

    **jQuery EasyUI 知识点详解** jQuery EasyUI 是一个基于 jQuery 的前端框架,它提供了一系列的 UI 组件,使得开发者能够快速...在实际项目中,熟练掌握 jQuery EasyUI 的使用技巧和 API,对于提升工作效率至关重要。

    jQuery EasyUI 1.5.1 版 API 中文版

    2. **组件详解**:jQuery EasyUI 提供了许多组件,如 `datagrid`(数据网格)、`dialog`(对话框)、`menu`(菜单)、`tabs`(选项卡)、`tree`(树形结构)和`form`(表单)。每个组件都有详细的配置选项、方法和...

    jQuery EasyUI tree 使用拖拽时遇到的错误小结

    ### jQuery EasyUI tree 使用拖拽功能知识点 #### jQuery EasyUI介绍 jQuery EasyUI是一个基于jQuery的前端框架,它提供了一系列用户界面组件,例如对话框、表格、菜单、树形控件等,以帮助开发者更快地构建Web界面...

    jQuery easyui 全套文件

    - 使用 jQuery EasyUI 的方法和属性初始化组件,例如 `$("#element").datagrid(options);`。 - 配置组件选项,如数据源、列定义、行为等。 4. **jQuery EasyUI 示例(Demo):** 提供的全套 demo 包含了各种组件...

    jQueryEasyUI1.3.6版本

    9. **文档和示例**:jQuery EasyUI 提供详尽的API文档和示例代码,有助于开发者快速学习和掌握使用方法。 10. **社区和更新**:jQuery EasyUI 有一个活跃的开发者社区,不断有新的插件和改进被贡献出来,而1.3.6...

    jQuery EasyUI 1.3.6 离线简体中文API文档

    最新版本的jQuery EasyUI 1.3.6版全中文API汉化文档火热出炉,由于很多人和我要chm格式的,所以本次API我提供了2种版本的API,一个还是以前的EXE格式,另外一个就是人气颇高的chm格式。本次还将EasyUI 1.3.6版直接...

    jQuery EasyUI 1.4.2 版 API 中文版.zip

    jQuery EasyUI 是一个基于 jQuery 的前端框架,它提供了一系列易于使用的组件,用于快速构建用户界面。1.4.2 版本是这个框架的一个稳定版本,包含了许多改进和修复,以提升开发者的体验和应用程序的性能。这个压缩包...

    Jquery easyUI api 下载

    下面将详细介绍 jQuery EasyUI 的核心概念、常用组件以及 API 使用方法。 jQuery EasyUI 基于 jQuery,这意味着它利用了 jQuery 的高效选择器和事件处理机制。EasyUI 提供的组件包括窗口(Window)、表格(Grid)、...

    jquery-easyui-1.7.0.zip官方文档

    它详尽地介绍了各个组件的使用方法、属性、事件和方法,帮助开发者快速上手并深入理解。此外,文档中还包含了示例代码,通过实际操作加深理解。 四、演示Demo的价值 1. 学习参考:Demo提供了直观的实例,展示了...

    JqueryEasyUI1.4参考手册

    在 `JqueryEasyUI1.4参考手册.chm` 中,你将找到关于 jQuery EasyUI 1.4 版本的详尽指南。`.chm` 文件是一种微软编写的帮助文档格式,它包含索引、搜索功能和一系列主题,方便用户查找和学习。 **组件介绍** ...

    jquery easyUI

    使用方法 在 HTML 页面中引入 jQuery 和 jQuery EasyUI 的 JS、CSS 文件后,通过简单的 JavaScript 代码就可以创建和配置组件。例如,创建一个数据网格只需一行代码: ```html 数据网格" class="easyui-datagrid...

    jQuery EasyUI V1.3.4 API中文版

    对于开发者而言,API文档是学习和理解框架功能的关键工具,它可以提供详尽的函数介绍、参数说明以及使用示例,帮助开发者高效地掌握jQuery EasyUI的使用方法。 jQuery EasyUI 的核心知识点包括: 1. **组件库**:...

    jQueryEasyUI 1.1完整源代码

    jQueryEasyUI 是一款基于 jQuery 的前端框架,它为开发者提供了一系列轻量级、易于使用的组件,用于快速构建用户界面。这个1.1版本包含了完整的源代码,允许开发者深入理解其工作原理,并进行定制和优化。 1. **...

    jQuery EasyUI 官方API中文版

    总的来说,jQuery EasyUI官方API中文版是开发者不可或缺的工具,它详细阐述了各个组件的使用方法,帮助开发者快速上手并高效地开发Web应用程序。通过深入学习和实践,我们可以利用EasyUI创建出具有专业级用户体验的...

Global site tag (gtag.js) - Google Analytics