Flex - 拖拽时自动展开Tree节点
作者:hangge | 2015-03-03 13:55
有时候我们想要对Tree进行拖拽操作,把一个节点从父节点拖拽到另一个节点下。但是Tree本身不提供自动展开节点功能。如果目标位置是在一个关闭的节点里面,就需要要先把节点展开再拖拽。
下面是一个拖拽时自动展开节点的方法:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"> <fx:Script> <![CDATA[ import mx.controls.treeClasses.TreeItemRenderer; import mx.events.DragEvent; [Bindable] private var mydata:XML = <root text="根节点"> <node text="节点1"> <node text="节点1-1"/> <node text="节点1-2"/> </node> <node text="节点2"> <node text="节点2-1"/> <node text="节点2-2"/> </node> </root> private function dragOverHandler(event:DragEvent):void { var currNodeOver:TreeItemRenderer = TreeItemRenderer(tree.indexToItemRenderer(tree.calculateDropIndex(event))); if (currNodeOver !=null) { if(tree.dataDescriptor.isBranch(currNodeOver.data) == true) { if (tree.isItemOpen(currNodeOver.data)==false) tree.expandItem(currNodeOver.data,true,true); } } } ]]> </fx:Script> <mx:Tree id="tree" dataProvider="{mydata}" labelField="@text" dragOver="dragOverHandler(event)" dragEnabled="true" dropEnabled="true" width="180" height="200"/> </s:Application>
全部评论(0)