想利用dijit.tree实现一个动态加载的树 (dojo)

p2227 2010-11-12 02:56:40
以下是我的思路和目前的工作,如果有现成的例子也可以不管我的思路
数据库是这样的架构的
id name pid
1 a 0
2 b 0
3 c 0
4 a1 1
5 a2 1

达到效果:
我是想用dijit的tree实现这样的功能:页面开始的时候,截入a b c 三个节点,然后展开a节点的时候(dijit.tree的onopen事件),再动态地载入a1 a2 节点,加在a下面,

我目前做到的:
我生成a b c三个节点时候的json格式是这样的(设这个json对象的名字为tree1)
{identifier:'ID',label:'Name',items:[{ID:"1",Name:"a",hasChild:[]},{ID:"2",Name:"b"},{ID:"3",Name:"c"}]}
应该是要把tree1改成
{identifier:'ID',label:'Name',items:[{ID:"1",Name:"a",hasChild:[{ID:"4",Name:"a1"},{ID:"5",Name:"a2"}]},{ID:"2",Name:"b"},{ID:"3",Name:"c"}]}就可以实现自动更新了
增加节点是可以用ItemFileWriteStore的newItem方法,但这种方法只是一个一个地添加,效率太低了

我的思路是把下面的json(名字为tree2)
{identifier:'ID',label:'Name',items:[{ID:"4",Name:"a1"},{ID:"5",Name:"a2"}]}里面的items对象直接放进tree1的hasChild里面就好了,因为一个节点的子节点可能有很多,这样批量操作效果应该会比较好,但我看了dojo的api很久了,始终找不到一个适合的操作函数,不知道有无人指点迷津?或者直接给个现成的例子,不需要按照我的思路也可。


另外打完这篇文字后发现pasteItem()这个函数貌似可以完成我的想法????反正现在思维比较乱,有很多想法但都没达到效果。。。
...全文
407 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
1024*1024 2011-11-22
  • 打赏
  • 举报
回复
dhtmlxTree谁有这个好一点的介绍啊。我想学。
p2227 2010-11-22
  • 打赏
  • 举报
回复
唉,dojo的api弱了点
lovebaylong 2010-11-12
  • 打赏
  • 举报
回复
LZ说的树没听也没有用,不懂。不过我常用的一种树框架是dhtmlxTree,感觉还是很不错的,推荐试用一下!我贴一段它支持json格式数据的代码给你参考一下:

<div id="treeboxbox_tree" style="width:200;height:200"></div>
<script>
tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
tree.setImagePath("../imgs/");
//link tree to asp script
tree.setXMLAutoLoading("json.php");
tree.setDataMode("json");
//load first level of tree
tree.loadJSON("json.php?id=0");</script>


基本上日常用到的都能满足,就看你个人开发的时候如何发挥了!
下面是该项目的主页:http://www.dhtmlx.com/docs/products/dhtmlxTree/index.shtml
有完整的代码与文档,不过全是英文!但是网上有它完整的中文API说明,可以搜一下!
hch126163 2010-11-12
  • 打赏
  • 举报
回复
一个一个地添加,效率太低

不一定把!
你看看它的ipa,你给他一个集合,他应该(我个人直觉,没用过这个东东)也是循环这个集合,一个一个处理的!
很不错的中文教程!文件太大分3个包! 目录如下: dojo精品中文教程 Dojo.1.0 Practice Note [1] 什么是dojo 选择dojo的理由 AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级AJAX动态加载的功能模块 Dojo学习笔记( 模块与包) Dojo学习笔记-- djConfig解说 Dojo学习笔记-- dojo.dom Dojo学习笔记-- dojo.event & dojo.event.topic & dojo.event.browser Dojo学习笔记--DateTextbox Dojo学习笔记--Dojo的基础对象和方法 Dojo学习笔记--FisheyeList鱼眼效果 Dojo学习笔记--TabContainer Dojo学习笔记--ValidationTextbox Dojo学习笔记--dijit.Dialog Dojo学习笔记--dijit.Menu Dojo学习笔记--dijit.TitlePane Dojo学习笔记--dijit.Tooltip Dojo学习笔记--dijit.Tree Dojo学习笔记--dojo.graphics.color & dojo.uri.Uri Dojo学习笔记--dojo.string & dojo.lang Dojo学习笔记--动态生成widget Dojo学习笔记--开发自己的TitlePane Dojo学习笔记--页面部分区域遮挡,DialogUnderlay Dojo学习笔记(五)-djConfig详解 dojo data 接口详解 dojo0.9 使用心得 dojo学习笔记(一)-dojo.io.IO & dojo.io.BrowserIO) dojo学习笔记(三) dojo学习笔记(二) dojo.lang.array & dojo.lang.func & dojo.string.extras dojo学习笔记(六)- ContentPane dojo学习笔记(四) dojo的拖拽示例以及疑问! 介绍dojo事件 使用 Dojo 工具包和 JSON-RPC 构建企业 SOA Ajax 客户端 利用Dojo实现拖动(Drag and Drop)效果
很不错的中文教程!文件太大分3个包! 目录如下: dojo精品中文教程 Dojo.1.0 Practice Note [1] 什么是dojo 选择dojo的理由 AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级AJAX动态加载的功能模块 Dojo学习笔记( 模块与包) Dojo学习笔记-- djConfig解说 Dojo学习笔记-- dojo.dom Dojo学习笔记-- dojo.event & dojo.event.topic & dojo.event.browser Dojo学习笔记--DateTextbox Dojo学习笔记--Dojo的基础对象和方法 Dojo学习笔记--FisheyeList鱼眼效果 Dojo学习笔记--TabContainer Dojo学习笔记--ValidationTextbox Dojo学习笔记--dijit.Dialog Dojo学习笔记--dijit.Menu Dojo学习笔记--dijit.TitlePane Dojo学习笔记--dijit.Tooltip Dojo学习笔记--dijit.Tree Dojo学习笔记--dojo.graphics.color & dojo.uri.Uri Dojo学习笔记--dojo.string & dojo.lang Dojo学习笔记--动态生成widget Dojo学习笔记--开发自己的TitlePane Dojo学习笔记--页面部分区域遮挡,DialogUnderlay Dojo学习笔记(五)-djConfig详解 dojo data 接口详解 dojo0.9 使用心得 dojo学习笔记(一)-dojo.io.IO & dojo.io.BrowserIO) dojo学习笔记(三) dojo学习笔记(二) dojo.lang.array & dojo.lang.func & dojo.string.extras dojo学习笔记(六)- ContentPane dojo学习笔记(四) dojo的拖拽示例以及疑问! 介绍dojo事件 使用 Dojo 工具包和 JSON-RPC 构建企业 SOA Ajax 客户端 利用Dojo实现拖动(Drag and Drop)效果
分三个包上传时,第三个包好像传不上去,我给整合了一下,打在一个包里上传了! dojo精品中文教程 Dojo.1.0 Practice Note [1] 什么是dojo 选择dojo的理由 AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级AJAX动态加载的功能模块 Dojo学习笔记( 模块与包) Dojo学习笔记-- djConfig解说 Dojo学习笔记-- dojo.dom Dojo学习笔记-- dojo.event & dojo.event.topic & dojo.event.browser Dojo学习笔记--DateTextbox Dojo学习笔记--Dojo的基础对象和方法 Dojo学习笔记--FisheyeList鱼眼效果 Dojo学习笔记--TabContainer Dojo学习笔记--ValidationTextbox Dojo学习笔记--dijit.Dialog Dojo学习笔记--dijit.Menu Dojo学习笔记--dijit.TitlePane Dojo学习笔记--dijit.Tooltip Dojo学习笔记--dijit.Tree Dojo学习笔记--dojo.graphics.color & dojo.uri.Uri Dojo学习笔记--dojo.string & dojo.lang Dojo学习笔记--动态生成widget Dojo学习笔记--开发自己的TitlePane Dojo学习笔记--页面部分区域遮挡,DialogUnderlay Dojo学习笔记(五)-djConfig详解 dojo data 接口详解 dojo0.9 使用心得 dojo学习笔记(一)-dojo.io.IO & dojo.io.BrowserIO) dojo学习笔记(三) dojo学习笔记(二) dojo.lang.array & dojo.lang.func & dojo.string.extras dojo学习笔记(六)- ContentPane dojo学习笔记(四) dojo的拖拽示例以及疑问! 介绍dojo事件 使用 Dojo 工具包和 JSON-RPC 构建企业 SOA Ajax 客户端 利用Dojo实现拖动(Drag and Drop)效果

52,782

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧