2011-03-07 98 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