Removing items from a Flex DataGrid control using the DragManager class

Problem

You want to remove items from a Flex DataGrid control using the drag manager.

Solution

The following example shows how you can drag an item from a Flex DataGrid control onto an Image control to remove the item from a data provider.

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/04/16/removing-items-from-a-flex-datagrid-control-using-the-dragmanager-class/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">
 
    <mx:Script>
        <![CDATA[
            import mx.core.IUIComponent;
            import mx.events.DragEvent;
            import mx.managers.DragManager;
 
            private function image_dragEnter(evt:DragEvent):void {
                var obj:IUIComponent = IUIComponent(evt.currentTarget);
                DragManager.acceptDragDrop(obj);
            }
 
            private function image_dragDrop(evt:DragEvent):void {
                var item:Object = dataGrid.selectedItem;
                var idx:int = arrColl.getItemIndex(item);
                arrColl.removeItemAt(idx);
            }
        ]]>
    </mx:Script>
 
    <mx:ArrayCollection id="arrColl">
        <mx:source>
            <mx:Array>
                <mx:Object c1="r1.c1" c2="r1.c2" c3="r1.c3" c4="r1.c4"/>
                <mx:Object c1="r2.c1" c2="r2.c2" c3="r2.c3" c4="r2.c4"/>
                <mx:Object c1="r3.c1" c2="r3.c2" c3="r3.c3" c4="r3.c4"/>
                <mx:Object c1="r4.c1" c2="r4.c2" c3="r4.c3" c4="r4.c4"/>
                <mx:Object c1="r5.c1" c2="r5.c2" c3="r5.c3" c4="r5.c4"/>
                <mx:Object c1="r6.c1" c2="r6.c2" c3="r6.c3" c4="r6.c4"/>
                <mx:Object c1="r7.c1" c2="r7.c2" c3="r7.c3" c4="r7.c4"/>
                <mx:Object c1="r8.c1" c2="r8.c2" c3="r8.c3" c4="r8.c4"/>
                <mx:Object c1="r9.c1" c2="r9.c2" c3="r9.c3" c4="r9.c4"/>
            </mx:Array>
        </mx:source>
    </mx:ArrayCollection>
 
    <mx:Panel title="Drag DataGrid item over the trash icon to remove item"
            styleName="opaquePanel">
        <mx:DataGrid id="dataGrid"
                dataProvider="{arrColl}"
                dragEnabled="true"
                width="400"
                rowCount="6"
                verticalScrollPolicy="on">
            <mx:columns>
                <mx:DataGridColumn dataField="c1"
                        headerText="Column 1" />
                <mx:DataGridColumn dataField="c2"
                        headerText="Column 2" />
                <mx:DataGridColumn dataField="c3"
                        headerText="Column 3" />
                <mx:DataGridColumn dataField="c4"
                        headerText="Column 4" />
            </mx:columns>
        </mx:DataGrid>
 
        <mx:ControlBar horizontalAlign="right">
            <mx:Image id="image"
                    source="@Embed('assets/iconUninstall.png')"
                    dragDrop="image_dragDrop(event);"
                    dragEnter="image_dragEnter(event);" />
        </mx:ControlBar>
    </mx:Panel>
 
</mx:Application>

你可能感兴趣的:(Removing items from a Flex DataGrid control using the DragManager class)