dhtmlxtree文档翻译

页面上初始化树
<div id="treeBox" style="width:200;height:200"></div>
<script>
tree=new dhtmlXTreeObject(document.getElementById('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.getElementById('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 children and opened
var im2 = "closed.gif";//if node contains children and closed
tree.insertNewItem(0,1,"New Node 1",0,im0,im1,im2);
tree.insertNewNext(1,2,"New Node 2",0,"txt.gif","opened.gif","closed.gif");
</script>
XML
方法: 使用<item>标签

<?xml version='1.0' encoding='iso-8859-1'?>
<tree id="0">
<item text="My Computer" id="1" child="1" im0="doc.gif" im1="my_opened.gif" im2="my_closed.gif">
</tree>
im0:
没有儿子的节点图片

im1:
打开节点的图片

im2:
关闭节点的图片



构建动态的树
:
如果你的树中包含大量的节点(或者你并不想花费时间来导入隐藏的节点).那么会有更好一点的方法来导入节点.针对这个效果我们使用xml创建动态导入节点的深度
.
察看章节:"使用XML导入数据
"
或者更多的细节:在我的知识库中的文章"dhtmltree V.1.x动态导入数据
"
操作节点
:
在树对象的方法中很少的操作树节点的例子

<script>
tree=new dhtmlXTreeObject('treeboxbox_tree',"100%","100%",0);
...
var sID = tree.getSelectedItemId();//get id of selected node
tree.setLabel(sID,"New Label");//change label of selecte node
tree.setItemColor(sID,'blue','red');//set colors for selected node's label (for not selected state and for selected state)
tree.openItem(sID);//expand selected node
tree.closeItem(sID);//close selected node
tree.changeItemId(sID,100);//change id of selected node to 100
alert("This node has children: "+tree.hasChildren(100));//show alert with information if this node has children
</script>


序列树

序列化方法允许在XML表达式中得到树.依靠反射直接序列化生成树

<script>
tree.setSerializationLevel(userDataFl,itemDetailsFl);
var myXmlStr = tree.serializeTree();

</script>
1.
没有参数
:id,open,select,text,child
2.userDataFI true-userdata
3.itemDetailsFI true -im0,im1,im2,acolor,scolor,checked,open


Tooltips:
这里有三种方法来给节点设置
tooltips:
1.
使用node label(text属性)作为tooltip-enableAutoTooltips(mode) -默认为
false
2.
使用tooltip属性

3.setItemText(itemId,newLabel,newTooltip)


移动节点
:
依靠程序来移动节点可以采用下列方法
:
移动
upp/down/left
tree.moveItem(nodeId,mode)
1."down":
向下移动节点(不需要注意层次
)
2."up":
向上移动节点

3:"left":
向上一层移动



直接移动到某个位置:(在树内
)
tree.moveItem(nodeId,mode,targetId)
1."item_child":
将节点置为第三个参数的子节点

2:"item_sibling":
将节点置为第三个参数的兄弟姐妹

3.targetId:
目标节点的
id


移动节点到某个位置(另外一个树
)
tree.moveItem(nodeId,mode,targetId,targetTree)
targetId:
目标节点的
id
targetTree:
目标树



剪切/粘贴

使用doCut(),doPaste(id):但是只可以使用到选择的item

开发者可以在某个位置删除节点然后在另外一个位置创建他

而用户尽可能的使用拖放功能来移动元素



节点计数器
:
也有可能在节点的标签上显示儿子的个数,可以使用以下方法激活它
:
<script>
tree.setChildCalcMode(mode);
</script>
可能的mode
:
1."child":
在该深度所有的儿子

2."leafs":
在该深度所有的叶子

3:"childrec":
所有的儿子

4:"leafsrec":
所有的叶子

5:"disabled":
什么也没有

其他相关的方法
:
_getChildCounterValue(itemId) -
得到当前计数器的值

setChildCalcHTML(before,after) -
改变计数器的值

当你在动态导入数据时如果你要使用计数,请在xml中使用child属性



smart xml
解析
:
smart xml
解析很简单:在客户端完整的树结构被导入,但是仅仅显示被指定应该显示的
.
这个将会减少导入时间和大树的性能.与动态导入相反,完整的树结构在大多数的script方法中是可行的
.
例如对所有节点的搜索.激活smart xml parsing使用以下方法
:
<script>
tree.enableSmartXMLParsing(true);//false to disable
</script>
smart xml parsing
如果在数被完全展开的时候不会执行
.


多选框
:
dhtmlxTree
支持三种状态的多选框
.
三种状态为:选择/不选择/一些子被选择(不是全部),激活多选框使用以下方法
:
<script>
tree.enableThreeStateCheckboxes(true)//false
为失效

</script>
多选框失效
:disableCheckbox(id,state)
一些节点可以隐藏checkboxes:showItemCheckbox(id,state)(nocheckbox xml属性
)


拖放技巧
:
有三种拖放模式
setDragBehavior(mode)
1.
拖为儿子
:"child"
2.
拖为姐妹
:"sibling"
3.
混合模式(previous要激活
):"complex"
加两个模式
:
1.
公用的拖放多个

2.
拷贝多个
:tree.enableMercyDrag(1/0)
事件处理
:Event handlers
在进行拖放多个前使用onDrug事件
:setDragHandler(func)
如果func不能返回true,那么放将会被取消

当放发生的时候会触发另外一个事件onDrop:使用
setDropHandler(func)
在所有的event handlers中会有5个参数传给func对象

1.
被拖的节点
id
2.
目标节点的
id
3.
如果放为姐妹时,前一个节点的
id
4.
被拖节点所属树

5.
目标节点所属树

iframes中的拖放
:
iframes中的拖放多个默认是可以的
.
所有你需要额外做的就是在没有树存在的地方插入下列代码

<script src="js/dhtmlXCommon.js"></script>
<script>
new dhtmlDragAndDropObject();
</script>


考虑到dhtml的性能低下问题,我们介绍两种方式来提高性能

1.
动态导入

2.smart XML
解析

确认你的树有良好的组织.在同一个深度插入大量的元素会导致可见性的提升和性能的降低

菜单上下文
:
这里是在dhtmltree中创建上下文菜单

菜单的内容可以在XML/script中设定
.
因为改变上下文的菜单内容依靠树元素

所以开发者可以实现相同菜单或者不同元素使用不同菜单的隐藏/显示

菜单上下文的开启如下
:
<script>
//init menu
aMenu=new dhtmlXContextMenuObject('120',0,"Demo menu");
aMenu.menu.setGfxPath("../imgs/");
aMenu.menu.loadXML("menu/_context.xml");
aMenu.setContextMenuHandler(onMenuClick);

//init tree
tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
...
tree.enableContextMenu(aMenu); //link context menu to tree
function onMenuClick(id){
alert("Menu item "+id+" was clicked");
}
</script>


刷新节点

1.refreems(itemIdList,source)
仅仅刷新节点列表(不包括他们的儿子
)
2.refreem(itemId) ,
刷新元素的儿子.在这里自动导入将会被激活

节点排序
:
你可以排序在dhtmlTree pro(必须使用dhtmlXTree_sb.js),使用以下方法
:
tree.sortTree(nodeId,order,all_levels);
1.nodeId:
开始排序的父节点(可以对整棵树排序
)
2.order:ASC/DES
3.all_levles:
如果为true,则所有子都会执行

自定义排序
:
//define your comparator (in our case it compares second words in label)
function mySortFunc(idA,idB){
a=(tree.getItemText(idA)).split(" ")[1]||"";
b=(tree.getItemText(idB)).split(" ")[1]||"";
return ((a>b)?1:-1);
}
tree = new ...
//attach your comparator to the tree
tree.setCustomSortFunction(mySortFunc);
比较两个节点IDs,如果自定义比较被指定,sortTree(...)方法将会使用它



搜索功能
:
dhtmlTree
允许使用节点的lable来做查询任务

也对Smart XML解析支持

tree.findItem(searchString); //find item next to current selection
tree.findItem(searchString,1,1)//find item previous to current selection
tree.findItem(searchString,0,1)//search from top


Multiline
树元素

允许显示在multiline模式.推荐使用关闭
lines
tree.enableTreeLines(false);
tree.enableMultiLineItems(true);


树的
Icon:
使用setItemImage,setItemImage2或者
xml(im0,im1,im2 )
设定ICON的大小
:
<item ... imheight="Xpx" imwidth="Xpx"></item>
tree.setIconSize(w,h);//set global icon size
tree.setIconSize(w,h,itemId)//set icon size for particular item


dhtmlTree中的错误处理

function myErrorHandler(type, desc, erData){
alert(erData[0].status)
}
dhtmlxError.catchError("ALL",myErrorHandler);
支持错误类型
:
1."ALL"
2."LoadXML"
处理下列参数

type:string
desc:
错误描述

erData:
错误的相关数组对象
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值