我有Flex的問題。我想知道,如果我有兩個列表框,並且我想在它們之間拖放,我如何防止用戶拖動到同一個列表中(從而複製項目?)我不能有這種情況案例謝謝你們Flex ::我如何防止拖放,拖到自我
1
A
回答
2
沒有測試過,但我想這樣的事情應該工作:
聽兩個名單dragStart
事件並設置source
變量取決於event.target
現在聽上都dragDrop
事件。如果source
與target
相同,則列出並呼叫event.preventDefault()
。
0
我找到了解決方案,我不知道該如何解決其他人的問題。我基本上在我的兩個列表: `
<mx:List id="srcList" dataProvider="{_source}"
allowMultipleSelection="true"
enabled="{enabled}"
labelField="{labelField}"
iconFunction="iconFunction"
dragEnabled="true"
dropEnabled="true"
dragDrop="doDragDrop(event);"
width="100%"
height="100%"
/>
</mx:VBox>
<mx:VBox paddingTop="50">
<mx:Button label="->" enabled="{enabled}" click="add()"/>
<mx:Button label="<-" enabled="{enabled}" click="rem()"/>
</mx:VBox>
<mx:VBox width="100%" height="100%">
<mx:Label text="{right_col_heading}" />
<mx:List id="dstList" dataProvider="{_destination}"
allowMultipleSelection="true"
enabled="{enabled}"
dragEnabled="true"
dropEnabled="true"
dragDrop="doDragDrop(event);"
width="100%"
height="100%"
labelField="{labelField}"
iconFunction="iconFunction"
verticalAlign="center"
/>`
我基本上都添加了一個dragMoveEnabled =「true」以兩個列表現在基本上不重新添加到同一列表中的項目本身,而只是移動的順序(這對我來說並不重要,因爲它發送的是肥皂,反向邏輯反正會按照正確的順序)。
2
這裏有一些簡單的功能,我建立了一個工作應用程序,我用頭圍繞着flex拖放來包裹頭部。我一直在尋找一種方法來使用拖放功能的多個列表,這些列表不會互相干擾。另外,我不想處理複製清單數據。
private function onlyAllowMoveDragOverHandler(event:DragEvent):void {
event.preventDefault();
event.currentTarget.showDropFeedback(event);
DragManager.showFeedback(DragManager.MOVE);
}
private function allowDropOnlyIfInitiatorEqualsComponent(event:DragEvent, component:IUIComponent):void {
event.preventDefault();
if (event.dragInitiator == component) {
DragManager.acceptDragDrop(event.target as IUIComponent);
}
else {
DragManager.showFeedback(DragManager.NONE);
}
}
而且我在我的MXML使用:
<mx:List
x="10"
y="170"
id="availableLangsList"
dataProvider="{availableLangs}"
width="100"
height="200"
dragEnabled="true"
dragMoveEnabled="true"
dropEnabled="true"
dragOver="onlyAllowMoveDragOverHandler(event);"
dragEnter="allowDropOnlyIfInitiatorEqualsComponent(event, selectedLangsList);"
dragComplete="selectedLangs.refresh();"
/>
<mx:Label x="129" y="153" text="list 4"/>
<mx:List
x="129"
y="170"
id="selectedLangsList"
dataProvider="{selectedLangs}"
width="100"
height="200"
dragEnabled="true"
dragMoveEnabled="true"
dropEnabled="true"
dragOver="onlyAllowMoveDragOverHandler(event);"
dragEnter="allowDropOnlyIfInitiatorEqualsComponent(event, availableLangsList);"
dragComplete="availableLangs.refresh();"
/>
0
在我的情況,我用了一個HashCollection(延伸的ArrayCollection)它只是谷歌,你會發現該組件。數據提供者綁定到這個擁有集合。您可以使用:dataprovider.put(key,object)而不是dataprovider.addItem(object)將項添加到集合中。
「散列」將確保集合中的唯一性。所以,即使用戶拖放了已經存在於散列中的某些東西,原始值也會被新對象替換(但這並不重要,因爲它的值相同)。
然而,「密鑰」必須是唯一的....否則,哈希想法將無法正常工作。
0
謝謝Brice,這些功能很有幫助。
對於他們在Spark列表中工作,只需使用createDropIndicator而不是showDropFeedback更新第一個函數,並停止傳遞事件。
private function onlyAllowMoveDragOverHandlerS(event:DragEvent):void {
event.preventDefault();
event.currentTarget.createDropIndicator();
DragManager.showFeedback(DragManager.MOVE);
}
相關問題
- 1. 如何防止「自我」拖放datagridview?
- 2. Flex HDividedBox防止拖動
- 3. Flex拖放和拖放
- 4. 拖放到Flex AdvancedDataGrid
- 5. 防止拖放分支外
- 6. 圖像裁剪:如何防止默認拖拽拖放操作?
- 7. flex-拖放
- 8. Flex - 防止拖動某些項目
- 9. HTML5拖放 - 防止拖放一個項目
- 10. Dojo:拖放停止拖動
- 11. Flex/AS3拖放 - 自定義拖放反饋
- 12. Flex嵌套拖放
- 13. flex:拖放問題
- 14. Flex TitleWindow模擬放置並防止拖動幾秒鐘?
- 15. Flex拖放和放置
- 16. 防止在字幕上拖放
- 17. 拖放,防止尷尬突出顯示?
- 18. 拖動事件不起作用 - 防止拖放
- 19. 如何防止在Flex/Flash中的父容器外面拖動?
- 20. 如何防止組件被拖出舞臺在Flex 3
- 21. Flex 4使用自定義DragProxy拖放
- 22. 如何阻止拖放頁面的拖放?
- 23. 如何防止在Qt中進行拖放操作時拖動的項目?
- 24. Flex:拖放,簡單示例
- 25. 免費的Flex拖放IDE
- 26. 拖放格子網格 - flex
- 27. Flex 3樹拖放很慢
- 28. 如何使我的jQuery可拖動/可拖放代碼更快?
- 29. 防止可拖動的項目被拖放到特定元素上
- 30. 我們如何限制DataGrid列拖放