我有一个AdvancedDataGrid,其可编辑参数为“true”。我的问题是,在成功拖拽之后drop,正在编辑该项目,我不希望这种情况发生。
我尝试使用以下方法创建自定义的advancedDataGrid:
override protected function dragCompleteHandler(event:DragEvent):void{
trace("call dragCompleteHandler");
super.dragCompleteHandler(event);
clearAllSelection();
selectedItem = null;
}
但它不起作用,我只是不知道是否必须使用preventDefault或其他东西停止事件。我还查看了Adobe AdvancedDataGrid代码,似乎在完成了一个拖动完成事件之后没有发送任何内容......
如何在拖拽和放置之后停止这个恼人的版本(或焦点)降?
编辑27/02/2012
解决方案是在构造函数(或组件的init函数)中侦听DRAG_START和DRAG_COMPLETE事件:
addEventListener(DragEvent.DRAG_START,itemDragStartHandler);
addEventListener(DragEvent.DRAG_COMPLETE,itemDragCompleteHandler);
和:
protected function itemDragStartHandler(event:DragEvent):void
{
editable = "false";
}
protected function itemDragCompleteHandler(event:DragEvent):void
{
editable = "true";
}
答案 0 :(得分:1)
尝试收听itemEditBeginning
事件。它是可取消的,因此您可以使用preventDefault()
来阻止编辑器显示。您可能需要存储已拖动/正在拖动的项目,以便仅在拖动和放置时阻止编辑事件。已经发生了下降。我不确定itemEditBeginning
和拖拽&调度drop事件,所以需要进行一些实验。使用trace
是调试这些事件的好方法......
我能想到的另一个解决方案是在拖拽时将editable
设置为false
。拖动开始并在拖动时将其设置为true
。丢弃完成。