`

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:错误的相关数组对象

分享到:
评论

相关推荐

    dhtmlxTree

    **dhtmlxTree详解** **一、什么是dhtmlxTree** dhtmlxTree是一款基于JavaScript的树形控件,它允许在网页上创建交互式的、可扩展的树状结构。这款控件支持多种操作,包括节点的添加、删除、拖放、展开与折叠等,...

    dhtmlXtree树 右dhtmlXtree键菜单

    dhtmlXtree是一款功能强大的JavaScript库,用于在Web页面中创建交互式的树形结构。它提供了丰富的特性,如拖放操作、多选、上下文(右键)菜单、图标支持等,广泛应用于网站导航、数据组织和展示。在这个场景中,...

    DHtmlXTree中文使用手册2.0版本

    【DHTMLXTree中文使用手册2.0版本】 在DHTMLX组件库中,DHTMLXTree是一款基于JavaScript的DHTML组件,它主要用于构建富交互式的Web界面,特别是在Ajax技术的支持下,能实现动态更新和高效的数据展示。DHTMLXTree...

    dhtmlxtree

    **dhtmlxtree详解与JSON应用** `dhtmlxtree` 是一个基于JavaScript的富客户端树形组件,它允许在Web应用程序中创建交互式的、可扩展的树状视图。这个组件由DHTMLX Suite提供,它是一个广泛使用的JavaScript UI库,...

    专业版dhtmlxtree下载

    dhtmlxtree是一款基于JavaScript的开源树形菜单控件,专为Web开发人员设计,用于在网页中构建交互式、可扩展的树状结构。它提供了丰富的功能和自定义选项,使得用户界面更加直观和易于操作。这款专业版dhtmlxtree在...

    dhtmlxTree v.3.0

    DhtmlxTree提供了丰富的API文档和示例代码,便于开发者学习和调试。结合`libCompiler`,开发者可以进行组件的编译和优化,以适应不同项目的性能需求。 总之,DhtmlxTree v.3.0是一个功能强大且易于定制的...

    dhtmlXTree1.6

    **dhtmlXTree1.6** 是一个基于JavaScript的...其丰富的特性、良好的文档支持和广泛的社区资源使其成为实现树形数据展示的理想选择。通过熟练掌握dhtmlXTree的用法,开发者能够创建出用户友好、功能丰富的Web应用程序。

    JS树:dhtmlxTree

    为了更好地理解和使用dhtmlxTree,可以参考`docsExplorer`中的文档,了解详细功能和具体用法。`readme.txt`可能包含了关于如何开始和版本信息等内容,而`index.html`通常是一个示例页面,展示了dhtmlxTree的不同功能...

    第三方树控件dhtmlxTree 3.6

    压缩包中的`docsExplorer`目录包含了详细的API文档和示例,帮助开发者了解如何使用dhtmlxTree的各种功能。同时,`index.html`和`readme.txt`文件提供了一些基础信息和快速入门指南。 **6. 库集成** dhtmlxTree 3.6...

    dhtmlxtree实例

    **dhtmlxtree实例详解** **一、dhtmlxtree简介** dhtmlxtree是一款强大的JavaScript树形控件,由DHTMLX Suite组件库提供,它允许开发者在Web应用程序中创建交互式的、可扩展的树状结构。dhtmlxtree支持多种特性,...

    dhtmlxtree的一个实用demo

    【标题】"dhtmlxtree的一个实用demo"指的是一个基于dhtmlxtree的示例应用,这个示例可能展示了如何在网页中实现交互式的树形数据结构,用于展示层次化的信息,比如目录结构、组织架构或者权限管理等。dhtmlxtree是一...

    Dhtmlxtree的例子

    Dhtmlxtree是一款基于JavaScript的树形控件,它提供了丰富的功能和自定义选项,用于在Web应用中创建交互式的树结构。这个例子展示了如何简单地使用Dhtmlxtree,并且利用XML数据来构建树节点。 首先,我们需要理解...

    dhtmlxtree专业版

    - 文档:可能包括API参考和用户指南,帮助开发者更好地理解和使用dhtmlxtree。 - 图标和其他资源:用于节点的图标和其他视觉元素。 通过深入研究这个压缩包,开发者可以快速上手并充分利用dhtmlxtree的专业特性,为...

    DhtmlxTree

    包含dhtmlxTree(树型控件),dhtmlxTabbar(选项卡),dhtmlxGrid(数据表格),dhtmlxCombo(下拉选项),dhtmlxTreeGrid(树型表格),dhtmlxVault(文件上传控件),dhtmlxMenu(菜单),dhtmlxToolbar(工具条),dhtmlxCalendar(日历...

    dhtmlxTree 2.1

    使用dhtmlxTree 2.1,你将获得详细的开发文档,包括API参考、教程和示例代码。同时,官方可能提供技术支持和社区论坛,以便解决开发过程中遇到的问题。 总的来说,dhtmlxTree 2.1 是一个强大的工具,适用于那些需要...

Global site tag (gtag.js) - Google Analytics