`
momoliu
  • 浏览: 25295 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

dojo之tree

    博客分类:
  • js
阅读更多

 

这是从我之前的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数据交互】 dojo Tree是一款强大的JavaScript库Dojo Toolkit中的组件,用于在网页中创建交互式的树形结构。这个组件允许用户以图形化的方式展示层次化的数据,并且支持多种数据交互操作,如节点的选择、...

    dojo动态tree

    Dojo 动态Tree是基于Dojo Toolkit的一个组件,它用于在Web应用中展示层级结构的数据,例如组织架构、文件目录或任何具有层次关系的信息。Dojo Toolkit是一个强大的JavaScript库,提供了丰富的UI组件和功能,使得开发...

    struts2-dojo-tree各种实例

    Struts2 Dojo Tree 是一个基于Struts2框架和Dojo JavaScript库的组件,用于在Web应用程序中创建可交互的树形视图。这个组件允许用户以图形化的方式浏览和操作层次结构数据,例如文件系统、组织结构或者数据库中的...

    dojo任意级树的节点转移

    Dojo Tree通过`dijit/tree/ForestStoreModel`和`dijit/Tree`等组件提供了强大的树型数据模型和渲染能力。 "任意级树的节点转移"涉及到的主要知识点有: 1. **数据模型**:在Dojo Tree中,每个节点都由一个数据对象...

    dojo checkbox tree

    利用dojo的ajax实现树结构,带有checkbox功能

    基于dojo的动态树

    Dojo Toolkit是一个功能强大的JavaScript库,它提供了多种UI组件,包括Tree组件,可以方便地在网页上构建动态、可交互的树形结构。 在【描述】中提到,这个例子不仅包含了基于Dojo的动态树的源代码,还提供了运行...

    dojo 树形列表 dijit.tree

    Dijit是Dojo Toolkit的一部分,专门提供了一系列可复用的UI控件,其中包括我们关注的“dijit.tree”,即树形列表。在本篇文章中,我们将深入探讨这五个关于dijit.tree的例子,并了解如何在实际应用中实现它们。 1. ...

    dojo精品中文教程(包一)

    AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级...

    dojo精品中文教程(全)

    AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级...

    dojo精品中文教程(包二)

    AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级...

    DOjo中文使用手册

    DOjo提供了许多高级功能,如树(Tree)、数据Grid、图表等。这些功能可以帮助用户快速构建复杂的Web应用程序。 Dojox扩展包 Dojox是DOjo的一个扩展包,提供了许多有用的功能,如 CometD、图表、数据Grid等。Dojox...

    dojo树实例

    Dojo Tree由`dijit/tree/ForestStoreModel`作为数据模型,`dijit/Tree`作为视图层,以及`dojo/store`作为数据存储。在这个实例中,我们可能会用到`dojo/store/Memory`或`dojo/data/ItemFileReadStore`作为简单的内存...

    dojo相关的js

    同时,还可以利用Dojo的Data Stores(数据存储)和Widgets(组件)来创建交互式的用户界面,例如Grid、Tree等,进一步提升用户体验。 标签"dojo"提示我们关注的重点是Dojo框架本身,所以了解Dojo的模块系统、主题、...

    Dojo API 1.9.chm 离线参考手册

    1. **模块系统**:Dojo的核心特性之一是它的AMD(Asynchronous Module Definition)模块系统,允许异步加载和组织代码,通过`require`和`define`函数来实现。这使得大型应用的构建和维护变得更加高效和有序。 2. **...

    dojo pagination example

    在这个文件中,开发者可能创建了一个Dojo数据网格(`dojox/grid/DataGrid`或`dijit/Tree`),并集成了一个分页插件(如`dojox/grid/pagination`)。分页插件通常包含上一页、下一页、页码选择和每页条目数设置等功能...

    dojo精品中文教程(包三)

    AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级...

    Dojo toolkit

    3. **UI组件**:Dojo提供了大量预先封装好的UI组件,如dijit/Dialog对话框、dijit/Calendar日历控件、dijit/Tree树形结构等,这些组件样式美观且易于集成到项目中。 4. **数据绑定和模板**:dojox/mvc提供了模型-...

    dojo document API 离线版制作依赖文件

    综上所述,这个压缩包提供了制作Dojo 1.9 API离线版所需的全部关键文件,包括详细的API描述(details.xml)、目录结构(tree.json)和主界面(tree.html)。开发者可以利用这些资源,在本地构建一个完整的Dojo API...

    Dojo组件大放送

    Dojo是个强大的javascript库,但是网上资料真是少得可怜,这次收集到的各类组件,直接使用,方便大家节省时间。

    dojo-release-1.8.2

    5. **dojo/store** 和 **dojo/data**:这两个模块定义了数据存储接口和模型,为异步数据访问提供了一致的API,与dojo/dnd(拖放)和dijit/Tree等组件配合使用。 6. **dojo/request**:负责网络请求,支持...

Global site tag (gtag.js) - Google Analytics