2011-07-21 35 views
2

我正在使用拖放DataGrid來重新排序項目。但是,當用戶按住Ctrl鍵時,他可以啓動拖動複製操作。我怎樣才能完全禁用複製? (不只是取消了下降,而且還可以防止按Ctrl +拖動從顯示(+)圖標)Flex DataGrid /列表拖放 - 如何避免複製

+0

哪個SDK您使用的? Flex 3或4? –

+0

@J_A_X,使用4.5 –

回答

1

一種方法是如下:

  1. 請收聽數據網格的keydown事件。如果用戶按住CTRL,則設置髒標記
  2. 在數據網格上偵聽dragStart事件。檢查是否將髒標誌設置爲true,如果是,則event.preventDefault()應該終止任何拖動。

不要忘記根據需要重置髒標誌。

+0

試試看。 dragStart期間的preventDefault似乎不會取消拖動操作。 –

+0

dragStart表示它已經啓動。 –

6

這個工作對我(的火花列表):

<s:List dragEnabled="true" dropEnabled="true" dragMoveEnabled="true" 
dragEnter="{event.ctrlKey = false}" dragOver="{event.ctrlKey = false}"> 
... 
</s:List> 
0
To avoid the copying use dragDropHandler() in which you can check weather the cntrl key is pressed while dragging, if yes you can restrict the dragdrop. 

protected function myTree_dragDropHandler(event:DragEvent):void { 
      if(event.ctrlKey== true) { 
       event.preventDefault(); 
       cvTree.hideDropFeedback(event); 
       return; 
      } 
}