这是从我之前的blog搬过来的。
dojo的tree创建比较简单,但创建一个含有复杂节点的tree并不是那么容易,我们接下来要创建的树节点将是比较复杂的节点树。
一. 创建treeModel
其中dataform的格式必须为
[
{
"frames": [
{
"start_time": 1354608387092039000,
"id": "b9f9c586-86a8-4c99-8da1-2a872901bb3b",
"desc": "<h2>ExtraTraceData</h2><table class=\"dl\"><tbody><tr><td>mandatory</td><td>false</td></tr></tbody></table><h2>properties</h2><table class=\"dl\"><tbody><tr><td>type</td><td>OperationType[http]</td></tr><tr><td>ExtraTraceData</td><td></td></tr><tr><td>label</td><td>GET /dojo/dojo/resources/blank.gif</td></tr><tr><td>contentLength</td><td>1042</td></tr><tr><td>returnValue</td><td>void</td></tr><tr><td>statusCode</td><td>404</td></tr></tbody></table>",
"expanded": 1,
"operation_signature": "GET /dojo/dojo/resources/blank.gif",
"duration": 1693000
}
],
"operation_signature": "GET /dojo/dojo/resources/blank.gif",
"id": "eefd777a-f365-4fbd-bcd8-721b3d8951fe"
}
]
var data={
identifier: 'id',
label: 'operation_signature',
items: dataform
}
var archiveNames = new dojo.data.ItemFileReadStore({
data: data
});
var treeModel = new dijit.tree.ForestStoreModel({
store: archiveNames,
childrenAttrs: ["frames"]
});
二.创建tree
var tree=new dijit.Tree({
showRoot:false,
model: treeModel,
persist:false,
_createTreeNode: function(args) {
var treeNode=new dijit._TreeNode(args);
var idx=treeNode.indent+1;
if(idx > 0)
{
treeNode=formatter(treeNode);
}
return treeNode;
},
getIconClass: function(/*dojo.store.Item*/ item, /*Boolean*/ opened){
return (!item || this.model.mayHaveChildren(item)) ?
(opened ? "noimage" : "noimage") : "dijitLeaf"
},
}, "trace_detaillist");
tree.startup();
tree.collapseAll();
需要说明的是:
showRoot 是否展示根节点
persist 是否持久化树的状态,若真,则在下次打开浏览器的时候,树各个节点的展开情况和上次打开的状态相同
_createTreeNode 自定义创建树节点
在tree上附加上双击事件响应。nodeWidget是dojo的树节点控件,通过nodeWidget.domNode可以获得dom节点,从而为其添加子节点。
dojo.connect( tree,"onDblClick", function(/*dojo.data*/ item, /*TreeNode*/ nodeWidget)
{/*事件响应处理*/})
三.自定义树节点的展开方式
只展开node中有expanded标志为1的节点。
expandAllNode=function()
{
var treeObj = dijit.byId('trace_detail');
var children = treeObj.rootNode.getChildren();
expandChildNode(children, treeObj);
};
expandChildNode=function(children, treeObj)
{
for (var i = 0; i < children.length; i++)
{
var node = children[i];
if(node.item.expanded==0)
continue;
if (node.isExpandable && !node.isExpanded)
{
treeObj._expandNode(node);
var childNodes = node.getChildren();
if (childNodes.length > 0)
expandChildNode(childNodes, treeObj);
}
}
}
分享到:
相关推荐
【dojo Tree数据交互】 dojo Tree是一款强大的JavaScript库Dojo Toolkit中的组件,用于在网页中创建交互式的树形结构。这个组件允许用户以图形化的方式展示层次化的数据,并且支持多种数据交互操作,如节点的选择、...
Dojo 动态Tree是基于Dojo Toolkit的一个组件,它用于在Web应用中展示层级结构的数据,例如组织架构、文件目录或任何具有层次关系的信息。Dojo Toolkit是一个强大的JavaScript库,提供了丰富的UI组件和功能,使得开发...
Struts2 Dojo Tree 是一个基于Struts2框架和Dojo JavaScript库的组件,用于在Web应用程序中创建可交互的树形视图。这个组件允许用户以图形化的方式浏览和操作层次结构数据,例如文件系统、组织结构或者数据库中的...
Dojo Tree通过`dijit/tree/ForestStoreModel`和`dijit/Tree`等组件提供了强大的树型数据模型和渲染能力。 "任意级树的节点转移"涉及到的主要知识点有: 1. **数据模型**:在Dojo Tree中,每个节点都由一个数据对象...
利用dojo的ajax实现树结构,带有checkbox功能
Dojo Toolkit是一个功能强大的JavaScript库,它提供了多种UI组件,包括Tree组件,可以方便地在网页上构建动态、可交互的树形结构。 在【描述】中提到,这个例子不仅包含了基于Dojo的动态树的源代码,还提供了运行...
Dijit是Dojo Toolkit的一部分,专门提供了一系列可复用的UI控件,其中包括我们关注的“dijit.tree”,即树形列表。在本篇文章中,我们将深入探讨这五个关于dijit.tree的例子,并了解如何在实际应用中实现它们。 1. ...
AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级...
AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级...
AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级...
DOjo提供了许多高级功能,如树(Tree)、数据Grid、图表等。这些功能可以帮助用户快速构建复杂的Web应用程序。 Dojox扩展包 Dojox是DOjo的一个扩展包,提供了许多有用的功能,如 CometD、图表、数据Grid等。Dojox...
Dojo Tree由`dijit/tree/ForestStoreModel`作为数据模型,`dijit/Tree`作为视图层,以及`dojo/store`作为数据存储。在这个实例中,我们可能会用到`dojo/store/Memory`或`dojo/data/ItemFileReadStore`作为简单的内存...
同时,还可以利用Dojo的Data Stores(数据存储)和Widgets(组件)来创建交互式的用户界面,例如Grid、Tree等,进一步提升用户体验。 标签"dojo"提示我们关注的重点是Dojo框架本身,所以了解Dojo的模块系统、主题、...
1. **模块系统**:Dojo的核心特性之一是它的AMD(Asynchronous Module Definition)模块系统,允许异步加载和组织代码,通过`require`和`define`函数来实现。这使得大型应用的构建和维护变得更加高效和有序。 2. **...
在这个文件中,开发者可能创建了一个Dojo数据网格(`dojox/grid/DataGrid`或`dijit/Tree`),并集成了一个分页插件(如`dojox/grid/pagination`)。分页插件通常包含上一页、下一页、页码选择和每页条目数设置等功能...
AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级...
3. **UI组件**:Dojo提供了大量预先封装好的UI组件,如dijit/Dialog对话框、dijit/Calendar日历控件、dijit/Tree树形结构等,这些组件样式美观且易于集成到项目中。 4. **数据绑定和模板**:dojox/mvc提供了模型-...
综上所述,这个压缩包提供了制作Dojo 1.9 API离线版所需的全部关键文件,包括详细的API描述(details.xml)、目录结构(tree.json)和主界面(tree.html)。开发者可以利用这些资源,在本地构建一个完整的Dojo API...
Dojo是个强大的javascript库,但是网上资料真是少得可怜,这次收集到的各类组件,直接使用,方便大家节省时间。
5. **dojo/store** 和 **dojo/data**:这两个模块定义了数据存储接口和模型,为异步数据访问提供了一致的API,与dojo/dnd(拖放)和dijit/Tree等组件配合使用。 6. **dojo/request**:负责网络请求,支持...