拖放图标问题

时间:2011-03-07 19:00:10

标签: flex actionscript flex3

我正在从数据网格拖动项目,拖动时我可以看到所选记录中的所有列,被拖动。但是我只想显示一列(可能是记录的名称或ID)?有没有办法实现这个目标?此外,我可以在拖动时显示图标或图像而不是记录。

谢谢大家。

1 个答案:

答案 0 :(得分:1)

这可以通过扩展DataGrid来公开DataGridDragProxy属性来完成。查看http://dgrigg.com/blog/2006/11/03/datagrid-drag-image/ working example

扩展的DataGrid:

<mx:DataGrid xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        <![CDATA[
        import mx.controls.dataGridClasses.DataGridDragProxy;
        import mx.core.IUIComponent;

        /**
        * @public
        * class to use as DragProxy image
        * set the default value to the standard DataGridDragProxy class
        */
        [Bindable]
        public var dragProxyImage: Class = DataGridDragProxy; 

        override protected function get dragImage():IUIComponent
        {
            var image:IUIComponent = new dragProxyImage();
            image.owner = this;
            return image;
        }
        ]]>
    </mx:Script>
</mx:DataGrid>

使用DataGrid:

<controls:DataGrid 
    dataProvider="{dataSource}" 
    rowHeight="40" 
    dragEnabled="true" 
    height="140" 
    dragProxyImage="com.dgrigg.controls.CustomDragProxy" 
    allowMultipleSelection="true">

    <controls:columns>
        <mx:DataGridColumn headerText="Image" dataField="image">
            <mx:itemRenderer>
                <mx:Component>
                    <mx:Image source="{data.image}"/>
                </mx:Component>
            </mx:itemRenderer>
        </mx:DataGridColumn>
        <mx:DataGridColumn headerText="Product" dataField="name"/>
        <mx:DataGridColumn headerText="Description" dataField="description"/>
    </controls:columns>
</controls:DataGrid>