基本特性
Tree提供nodes属性让你添加一个数组或一个EntityList对象,然后将这些对象按照树节点的方式添加到Tree中。
Tree继承Control对象,因此也具有Control控件的基本特性,详情请参考:Control(DCUG)
使用简介
简单场景中,我们可以直接在View的设计器中添加树节点,如:
或者通过JS编码设置nodes属性:
// @Bind #treeView.onCreate !function(self, arg) { self.set("nodes",[{ label:"General", icon:"images/folder.gif", nodes:[{ label:"DataSet", icon:"images/view/DataSet.gif" },{ label:"Control", icon:"images/view/Control.gif" },{ label:"Container", icon:"images/view/Container.gif" },{ label:"HtmlContainer", icon:"images/view/HtmlContainer.gif" },{ label:"SubViewHolder", icon:"images/view/SubViewHolder.gif" }] },{ label:"Action", icon:"images/folder.gif", nodes:[{ label:"Action", icon:"images/view/Action.gif" },{ label:"AjaxAction", icon:"images/view/AjaxAction.gif" },{ label:"UpdateAction", icon:"images/view/UpdateAction.png", nodes:[{ label:"UpdateItem", icon:"images/view/UpdateItem.gif", }] },{ label:"FormSubmitAction", icon:"images/view/FormSubmitAction.gif" }] } ]); }
树节点
树节点的详细说明请参考: Node。
详细属性说明
allowNoCurrent
当此属性为true时,如果用户点击了Tree中空白区域后,当前树节点将被设置为空。如下的动画中我们选择了其中的一个树节点,这个树节点就有一个绿色背景,这个时候将鼠标移到Tree的空白区域,并单击后选中树节点的绿色背景就消失:
默认值为false,当这个值为false时,激活的树节点的背景色就始终存在:
currentNode
通过currentNode可以获得当前激活的树节点对象,如:
var currentNode = treeView.get("currentNode"); dorado.MessageBox.alert(currentNode.get("label"));
defaultIcon和defaultExpandedIcon
Tree通过这两个属性设置默认的节点图标,当然你也可以直接设置到Node节点上。
defaultIcon与defaultExapndedIcon的差别通过如下的比较图区分:
效果差异说明 | Action节点未展开前显示的是defaultIcon的图标 | Action节点展开后显示的是defaultExpandedIcon的图标 |
defaultIconClass和defaultExpandedIconClass
defaultIconClass与defaultExpandedIconClass的属性是分别设置defaultIcon与defaultExapndedIcon的css效果的。
expandingAnimated
该属性控制拥有子节点的父节点在展开是是否有一个动画效果。
expandingMode
节点展开的同步模式,默认为异步展开。
firstNode
返回树中的第一个有效节点。如:
var firstNode = treeView.get("firstNode"); dorado.MessageBox.alert(firstNode.get("label"));
如果当前树中没有节点该属性的返回值为null.
highlightCurrentRow
该属性用于控制是否高亮显示当前行。highlightCurrentRow的默认值为true。
显示效果差异说明 | highlightCurrentRow为true | highlightCurrentRow为false |
highlightHoverRow
该属性设置当光标在Tree节点的上方移动的时候是否高亮显示鼠标悬停的行。如果设置为false就会关闭这种特效。
highlightSelectedRow
该属性用于关闭下图中当前选中树节点选中高亮背景显示的效果,当时并不影响Tree的selectionMode功能(后面将会详细说明selectionMode属性)
indent
每一层子节点相对于父节点的缩进距离。
显示效果比较 | indent默认值18 | indent值设置为50 |
root
root是系统自动创建的根节点,其它节点都位于root节点的下面。同样root节点是不可见的它是为管理树节点而提供的一个根节点。不过通过JS代码可以访问到:
var nodes = treeView.root.get("nodes"); var labelStr = ""; nodes.each(function(node){ labelStr+=node.get("label")+"\n"; }); dorado.MessageBox.alert(labelStr);
rowHeight
在PC中浏览Tree的默认行高为24,移动设备上默认的行高为30.
当然你也可以调整行高:
显示效果差异说明 | rowHeigh为24 | rowHeight为50 |
看起来后面的页面效果稍嫌粗糙,但是在移动设备上或许后面的页面效果会更好,或对老年人来说可能更喜欢后面的界面效果。
scrollMode
该功能机制与BlockView中的scrollMode一样,详情请参考:BlockView(DCUG)
selectionMode和selection
当selectionMode为singleRow或multiRows时,你可以通过ctrl或者shift快捷键选中多个树节点。
并且通过Tree的selection属性访问:
var nodes = treeView.get("selection"); var labelStr = ""; nodes.each(function(node){ labelStr+=node.get("label")+"\n"; }); dorado.MessageBox.alert(labelStr);
selectionMode的默认值为none,表示默认不支持ctrl或shift快捷键。
showLines
Tree提供showLines用于控制节点之间是否显示虚线连接。
显示效果差异说明 | showLines为false | showLines为true |
Attachments:
TreeDesign.PNG (image/png)
TreeShowLines.PNG (image/png)
TreeRowHeight.PNG (image/png)
TreeHighlightCurrentRowDefault.gif (image/gif)
TreeHighlightCurrentRow.gif (image/gif)
TreeHighlightHoverRow.gif (image/gif)
TreeAllowNoCurrent.gif (image/gif)
TreeAllowNoCurrentDefault.gif (image/gif)
TreeDefaultIcon.PNG (image/png)
TreeDefaultExpandIcon.PNG (image/png)
TreeMultiRows.PNG (image/png)
TreeIndent50.PNG (image/png)
TreeCurrentNode.PNG (image/png)
TreeFirstNode.PNG (image/png)
TreeRootNode.PNG (image/png)
NodeChecked.PNG (image/png)