DataGrids have linear data and place into the dragsource a format called
"items".  A tree takes hierarchical data and expects a format called
"treeItems".  You can customize the drop handling on the tree.  It
requires using preventDefault() to block default tree behavior and
inserting the "items" data yourself.

 

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Luis Torres
Sent: Monday, October 01, 2007 11:12 AM
To: [email protected]
Subject: [flexcoders] Dragging from Datagrid to Tree

 

This has been asked several times, but I haven't seen an answer yet. 
I'm trying to drag an item from a datagrid to a tree. From datagrid
to datagrid works fine, but for some reason, dragging to a tree won't
accept the dragdrop, even when the dragManager is told to accept it. 
I'm sure there's something stupid I'm missing, but I just can't see
it. Here's a simple sample that demonstrates what I'm talking about.

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml
<http://www.adobe.com/2006/mxml> " width="100%"
height="100%" borderStyle="solid" >

<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.managers.DragManager;
import mx.events.DragEvent;
private function doDragEnter(rEvent:DragEvent):void {
DragManager.acceptDragDrop(Tree(rEvent.currentTarget));
}

private function doDragDrop(rEvent:DragEvent):void {
Alert.show('dropped');
}
]]>
</mx:Script>

<mx:ArrayCollection id="treeData1">
<mx:Object label="cat 1" children="{treeData2}"/>
<mx:Object label="cat 2" children="{treeData3}"/>
<mx:Object label="cat 3" children="{treeData4}"/>
</mx:ArrayCollection>

<mx:ArrayCollection id="treeData2">
<mx:Object label="cat 1a"/>
</mx:ArrayCollection>

<mx:ArrayCollection id="treeData3">
<mx:Object label="cat 2a"/>
</mx:ArrayCollection>

<mx:ArrayCollection id="treeData4">
<mx:Object label="cat 3a" />
</mx:ArrayCollection>

<mx:ArrayCollection id="listData">
<mx:Object label="oc1"/>
<mx:Object label="oc2"/>
</mx:ArrayCollection>

<mx:HBox width="100%">
<mx:Tree id="tr" dataProvider="{treeData1}" showRoot="false"
labelField="label"
dropEnabled="true" dragEnter="doDragEnter(event)" dragEnabled="true"
width="100%" dragDrop="doDragDrop(event)"/>
<mx:DataGrid id="dg" dataProvider="{listData}" dragEnabled="true"
dropEnabled="true" width="100%">
<mx:columns>
<mx:DataGridColumn dataField="label"/>
</mx:columns>
</mx:DataGrid>
</mx:HBox>
</mx:Application>

 

Reply via email to