Flex tree 限制节点同级间拖拽

原创 2013年12月03日 11:20:32
<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">     
	   <mx:Script> 
		   <![CDATA[                   
		   import mx.events.DragEvent;     
		   import mx.managers.DragManager;      
		   import mx.core.DragSource;          
		   import mx.core.UIComponent;          
		   import mx.controls.Tree;              
		   private var _draggedItem:XML = null;   
		   private function onDragEnter( event:DragEvent ) : void    
		   {                 
			   event.preventDefault();        
			   event.currentTarget.hideDropFeedback(event);  
			   var ds:DragSource = event.dragSource;         
			   var items:Array = ds.dataForFormat("treeItems") as Array;  
			   if (items != null && items.length > 0 && (items[0] is XML))     
				   _draggedItem = items[0];                       
			   DragManager.acceptDragDrop(UIComponent(event.currentTarget));     
		   }                   
			   private function onDragOver( event:DragEvent ) : void    
			   {                 
				   event.preventDefault();                
				   event.currentTarget.hideDropFeedback(event);        
				   tree.selectedIndex = tree.calculateDropIndex(event);    
				   var node:XML = tree.selectedItem as XML;                 
				   // restrict drag & drop to nodes within same parent     
				   if (_draggedItem.parent() != node.parent())              
				   {                   
					   DragManager.showFeedback(DragManager.NONE);    
					   
					   return;          
				   }                      
				   DragManager.showFeedback(DragManager.MOVE);
			   }    
			   
			   private function onDragDrop( event:DragEvent ) : void    
			   {                
				   event.preventDefault();             
				   event.currentTarget.hideDropFeedback(event);     
				   tree.selectedIndex = tree.calculateDropIndex(event); 
				   var node:XML = tree.selectedItem as XML;                        
				   var addToIndex:int = node.childIndex();         
				   if ((_draggedItem.parent() == node.parent()) && (addToIndex != _draggedItem.childIndex()))          
				   {   
					   tree.dataDescriptor.removeChildAt(node.parent(), _draggedItem, _draggedItem.childIndex());       
					   tree.dataDescriptor.addChildAt(node.parent(), _draggedItem, addToIndex);            
				   }       
			   }                    
			   private function onDragComplete( event:DragEvent ) : void           
			   {                
				   tree.selectedIndex = -1;      
			   }            
		   ]]>   
	   </mx:Script>       
	<mx:XML id="treeData" xmlns="">     
		<root>             
			<node label="Massachusetts" type="state" data="MA">    
				<node label="Boston" type="city" >             
					<node label="Smoke House Grill" type="restaurant" />      
					<node label="Equator" type="restaurant" />              
					<node label="Aquataine" type="restaurant" />               
					<node label="Grill 23" type="restaurant" />              
				</node>                
				<node label="Provincetown" type="city" > 
					<node label="Lobster Pot" type="restaurant" />             
					<node label="The Mews" type="restaurant" />             
				</node>           
				</node>      
			<node label="California" type="state" data="CA">   
				<node label="San Francisco" type="city" >        
					<node label="Frog Lane" type="restaurant" />        
				</node>        
			</node>      
		</root>   
	</mx:XML>
   <mx:Tree width="100%" height="100%" id="tree"    
			labelField="@label"   
			dataProvider="{treeData.node}"      
			allowMultipleSelection="false"   
			dragEnabled="true"      
			dropEnabled="true"       
			dragMoveEnabled="false" 
			dragEnter="onDragEnter(event)"      
			dragOver="onDragOver(event)"      
			dragDrop="onDragDrop(event)"      
			dragComplete="onDragComplete(event)"/>  
</mx:Application>


 

flex 经典拖拽可编辑Tree

xmlns:s="library://ns.adobe.com/flex/spark"                xmlns:mx="library://ns.adobe.com/flex/m...

ztree使用系列四(ztree实现同级拖拽排序并将排序结果保存数据库)

ztree这个系列的最后一篇,也是ztree功能强大的体现之一——排序功能。ztree可以实现所有节点之间随意的拖拽排序功能,我这里根据需要实现了只允许同级之间随意拖拽排序,其实原理都一样,只是范围缩...

ztree仅并排同级进行推拽(同一个组织下不同部门排序拖拽)

ztree仅并列同级进行推拽(同一个组织下不同部门排序拖拽) 实现仅同一个组织下不同部门排序拖拽是判断当前拖拽的节点pId和目标节点的pId是否相等,否则禁止拖拽,拖拽的重点方法是以下两个:call...

flex表格间数据的拖拽

  • 2013年05月28日 09:07
  • 2.25MB
  • 下载

Flex tree增加,删除,查询并定位节点

直接上代码:

Flex改变Tree树的节点图标和颜色

package { import mx.controls.treeClasses.TreeItemRenderer; import mx.controls.treeClasses.Tr...

Flex Tree自动定位节点

xmlns:s="library://ns.adobe.com/flex/spark"           xmlns:mx="library://ns.adobe.com/flex/mx" wid...

Flex 给Tree的每个节点添加自定义图标

此功能通过上一博文中第二种方式

flex Tree 展开特定节点

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Flex tree 限制节点同级间拖拽
举报原因:
原因补充:

(最多只允许输入30个字)