日期:2014-05-17  浏览次数:20605 次

dhtmlxtree,基于xml配置文件生成带checkbox的选择树
dhtmlxtree是http://www.scbr.com/的一系列dhtmlx控件之一
主要包括
dhtmlXCommon.js
dhtmlXTree.js
还有css和icon可以选用

目前最新的版本为1.4与1.3比较
dhtmlXTree.js增加了很多函数



dhtmlxtree文档翻译(转)


页面上初始化树
<div id="treeBox" style="width:200;height:200"></div>
<script>
tree=new dhtmlXTreeObject(document.getElementByIdx('treeBox'),"100%","100%",0);
tree.setImagePath("gfx/");
tree.enableCheckBoxes(false);
tree.enableDragAndDrop(true);
</script>
构造器的参数如下:
1.应该将树放置的位置,在调用构造器之前应当为初始化
2.树的宽度
3.树的高度
4.标明父节点到树根节点的深度
特殊参数:
1.setImagePath(url):指明了树图标的路径
2.enableCheckBoxes(mode):多选框是否有效,默认显示多选框
3.enableDragAndDrop(mode):是否允许拖放动作

设置Event Handlers
<div id="treeBox" style="width:200;height:200"></div>
<script>
tree=new dhtmlXTreeObject(document.getElementByIdx('treeBox'),"100%","100%",0);
...
tree.setOnClickHandler(onNodeSelect);//set function object to call on node select
//see other available event handlers in API documentation
function onNodeSelect(nodeId){
...
}
</script>
大多数情况下制定event handlers的参数会得到一些值.关于被传递的变量细节部分请参考API documentation.

用Script加入节点:
<script>
tree=new dhtmlXTreeObject('treeBox',"100%","100%",0);
...
tree.insertNewChild(0,1,"New Node 1",0,0,0,0,"SELECT,CALL,TOP,CHILD,CHECKED");
tree.insertNewNext(1,2,"New Node 2",0,0,0,0,"CHILD,CHECKED");
</script>
1.参数0将会被传递给函数的参数4-7(调用select,image功能)的作用是使用他们的默认值.
2.第8个参数使用','分割
3.SELECT:在插入后移动光标到该节点
4.TOP:在TOP位置加入节点
5:CHIld:节点为儿子
6.CHECKED:多选框被选中(如果存在的话)

从XML中引导数据:
<script>
tree=new dhtmlXTreeObject('treeBox',"100%","100%",0);
tree.setXMLAutoLoading("http://127.0.0.1/xml/tree.xml");
tree.loadXML("http://127.0.0.1/xml/tree.xml");//load root level from xml
</script>
1.被打开节点的ID将会被加入到initXMLAutoLoading(url)中去
2.当被调用的时候没有额外的ID加入到loadXML(url)中
3.当调用没有参数loadXML()时,你将会使用initXMLAutoLoading(url)中的url
XML Syntax:
<?xml version='1.0' encoding='iso-8859-1'?>
<tree id="0">
<item text="My Computer" id="1" child="1" im0="my_cmp.gif" im1="my_cmp.gif" im2="my_cmp.gif" call="true" select="yes">
<userdata name="system">true</userdata>
<item text="Floppy (A:)" id="11" child="0" im0="flop.gif" im1="flop.gif" im2="flop.gif"/>
<item text="Local Disk (C:)" id="12" child="0" im0="drv.gif" im1="drv.gif" im2="drv.gif"/>
</item>
<item text="Recycle Bin" id="4" child="0" im0="recyc.gif" im1="recyc.gif" im2="recyc.gif"/>
</tree>
在PHP的语法中:
<?php
if ( stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml") ) {
header("Content-type: application/xhtml+xml"); } else {
header("Content-type: text/xml");
}
echo("<?xml version="1.0" encoding="iso-8859-1"?>\n");
?>
<tree>节点是强制的,他表明引导数据块的父亲.按照ID参数指定他的父亲.引导root的时候你需要指定tree对象:new myObjTree(boxObject,width,height,0)
<item>可以包含子元素(为了一次load更多),该标签的强制参数如下:
1.text:节点的名称
2.id:节点的id
可选参数如下:
3tooltip:节点的提示
4im0:没有儿子的节点图片(节点依靠setImagePath(url)中指定的路径来得到图片)
5.im1:打开有儿子节点时的图片
6.im2:关闭有儿子节点的图片
7:acolor:没有选择元素的颜色
8:scolor:选择元素后的颜色
9:select:在导入节点的时候选择
10:open:将节点展开
11:call:调用函数在选择节点的时候
12:checked:如果多选框存在的时候选择
13:child:如果节点有儿子的时候为1否则为0
14:imheight:图标的高度
15:imwidth:图标的宽度
在xml中直接设定userdata<userdata>
他有一个参数:name,value来指定他的值

给节点设定自定义图标:
这里有两种方法来给节点设定自定义图标.它依赖欲你加元素的方式
注:依靠setImagepath(url)方法来得到图片
javascript方法:使用insertNewChild(...)或者insertNewNext(...)方法
<script>
var im0 = "doc.gif";//icon to show if node contains no children
var im1 = "opened.gif";//if node contains chil