2010-08-10 55 views
0

我试图从一个数据网格中拖动一个项目并将其放到UIComponet上。基本上我只是想让UIComponent知道已经有东西掉到它上面,并允许它访问被丢弃物品的数据。从数据网格拖放到Flex中的自组织单元

我认为只是听滴的事件会做到这一点,但似乎没有。

我发现了很多关于从一个IList拖拽到另一个IList的文档,但没有提供这方面的信息。

<mx:UIComponent xmlns:mx="http://www.adobe.com/2006/mxml" 
       initialize="init(event)" dragDrop="itemDropped(event)"> 

回答

0

您需要处理DRAG_ENTER太:

<s:TextInput id="input" dragEnter="input_dragEnterHandler(event)" 
    dragDrop="input_dragDropHandler(event)"/> 

处理程序:

private function input_dragEnterHandler(event:DragEvent):void 
{ 
    var data:Array = event.dragSource.dataForFormat("items") as Array; 
    if (data && data.length > 0) 
     DragManager.acceptDragDrop(input); 
} 

private function input_dragDropHandler(event:DragEvent):void 
{ 
    var data:Array = event.dragSource.dataForFormat("items") as Array; 
    input.text = data[0].name; 
} 
+0

酷,通过UIComponent现在可以接受滴。然而,我认为我将不得不一起抛弃dragManager,并用自己的解决方案来解决问题。原因是我想使用自定义拖动代理图像,这需要手动设置拖动管理器。在dodrag方法中设置拖动初始值时,我只能通过数据网格,而不是被点击的datagrid行项,这会弄乱我的代理图像的位置。它总是在dg的x,y处附着,而不是在它自己的附近 – dubbeat 2010-08-11 10:44:00

+0

从头开始,我与dodrag碰撞,并将它定位好。 – dubbeat 2010-08-11 11:15:25