I made an example of what I'm talking about.  I cant get it to accept
an item (not have that red x) when I drag a datagrid row over the
tree.  ondragEnter is where the code that SHOULD handle it is.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
layout="vertical">
    <mx:Script>
        <![CDATA[

        import mx.controls.dataGridClasses.DataGridColumn;
        import mx.events.DragEvent;        
        import mx.collections.XMLListCollection;
        import mx.managers.DragManager ;
        import mx.controls.Tree;
        import mx.core.DragSource;
        import mx.controls.DataGrid;
        import mx.core.UIComponent;
        
        [Bindable]
        public var company:XML =
        <list>
            <folder title="Firmware" code="200" isBranch="true">
                <project projDef="D.002440" projDesc="Project3" />
                <project projDef="D.000621" projDesc="Project4" />
            </folder>
            <folder title="Hardware" code="300" isBranch="true">
               <project projDef="M.000237" projDesc="Project1" />
               <project projDef="M.000169" projDesc="Project2" />
            </folder>
            <folder title="Misc" code="400" isBranch="true" />
        </list>;
        
        [Bindable]
        public var myData:XML =
        <list>
            <item title="item1"/>
            <item title="item2"/>   
            <item title="item3"/>
        </list>;
        
        [Bindable] public var companyList:XMLListCollection = new
XMLListCollection( company.folder );
        [Bindable] public var companyList2:XMLListCollection = new
XMLListCollection(myData.item );
        private function treeLabel( item:Object ) : String{
             var node:XML = XML(item);
             if( node.localName() == "folder" )
                 return [EMAIL PROTECTED];
             else
                 return [EMAIL PROTECTED];
        }
        
        //THIS IS WHERE MY PROBLEMS ARE, I THINK!
        private function onDragEnter(event:DragEvent) : void{
             event.preventDefault();
             var ds:Array
            if (event.dragInitiator is DataGrid){
                ds = event.dragSource.dataForFormat ("items") as Array;
            }
            if (event.dragInitiator is Tree){
                ds = event.dragSource.dataForFormat("treeItems") as Array;
               }
                for( var i:int = 0; i < ds.length; i++ ){
                        trace(ds[i].projDef);
            }
               
            DragManager.acceptDragDrop(UIComponent(event.currentTarget));

        }

        ]]>
    </mx:Script>
    
    <mx:Tree id="myTree" width="200"   
            allowMultipleSelection="true"
            dropEnabled="true"
            labelFunction="treeLabel"
            dragEnabled="true"
            dragMoveEnabled="true"
            dragEnter="onDragEnter(event)"
            dataProvider="{companyList}">                
    </mx:Tree>
    
    
    <mx:DataGrid  dragEnabled="true" dataProvider="{companyList2}">
        <mx:columns>
            <mx:DataGridColumn headerText="Column 1" dataField="@title"/>
            <mx:DataGridColumn headerText="Column 2" dataField=""/>
            
        </mx:columns>
    </mx:DataGrid>
    
</mx:Application>



--- In flexcoders@yahoogroups.com, "Nate Pearson" <[EMAIL PROTECTED]> wrote:
>
> Alex, ur the man for always replying to me :).
> 
> I changed it to:
> 
> private function onDragEnter(event:DragEvent):void{
> 
>  event.preventDefault();
> 
>  DragManager.acceptDragDrop(UIComponent(event.currentTarget))
>  
>  }
> 
> Maybe I should post some example code?
>       
> 
> --- In flexcoders@yahoogroups.com, "Alex Harui" <aharui@> wrote:
> >
> > I think you have to call preventDefault on the event.
> > 
> > ________________________________
> > 
> > From: flexcoders@yahoogroups.com
[mailto:[EMAIL PROTECTED] On
> > Behalf Of Nate Pearson
> > Sent: Wednesday, April 18, 2007 7:48 PM
> > To: flexcoders@yahoogroups.com
> > Subject: [flexcoders] Dragging from a Datagrid to a tree
> > 
> > 
> > 
> > this seems pretty straight forward. I am dragging from a datagrid to
> > a tree, but i get the red X.
> > 
> > on the tree i set dragEnter="onDragEnter(event)" dropEnabled="true"
> > 
> > then i have:
> > 
> > private function onDragEnter(event:DragEvent):void{
> > 
> > DragManager.acceptDragDrop(UIComponent(event.currentTarget))
> > 
> > }
> > 
> > What the buggers?!
> >
>


Reply via email to