返回 导航

Flex

hangge.com

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)

回到顶部