2011-03-07 77 views
1

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

谢谢你们。

回答

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> 
+0

这工作...但我不得不做出,以便将所拖动的项目很多硬编码的变化在鼠标正确的位置。但是,如果我的电脑的分辨率发生变化,这也是不一致的。但是,尽管如此,我明白了这一点,并在某种程度上解决了这个问题。谢谢。 – Tintin 2011-03-10 21:18:13

+0

@ user503510,别担心。如果我的答案有助于解决您的问题,请注意标记为已接受的答案和优惠政策。 :) – 2011-03-10 21:27:23