Apache flex Flex防止数据网格在拖动后编辑&;滴

Apache flex Flex防止数据网格在拖动后编辑&;滴,apache-flex,drag-and-drop,advanceddatagrid,Apache Flex,Drag And Drop,Advanceddatagrid,我有一个AdvancedDataGrid,可编辑参数为“true”。我的问题是,在成功拖放之后,该项目正在被编辑,我不希望发生这种情况 我尝试使用以下内容创建自定义advancedDataGrid: override protected function dragCompleteHandler(event:DragEvent):void{ trace("call dragCompleteHandler"); super.dragCompleteHa

我有一个AdvancedDataGrid,可编辑参数为“true”。我的问题是,在成功拖放之后,该项目正在被编辑,我不希望发生这种情况

我尝试使用以下内容创建自定义advancedDataGrid:

override protected function dragCompleteHandler(event:DragEvent):void{
            trace("call dragCompleteHandler");
            super.dragCompleteHandler(event);
            clearAllSelection();
            selectedItem = null;
        }
但它不起作用,我只是不知道我是否必须用preventDefault或其他东西来停止事件。我还研究了AdobeAdvancedDataGrid代码,似乎在dragcomplete事件之后没有任何调度

在拖放之后,如何停止这个恼人的版本(或焦点)

编辑2012年2月27日

解决方案是在构造函数(或组件的init函数)中侦听DRAG_START和DRAG_COMPLETE事件:

以及:


尝试收听
itemeditbeging
事件。它是可取消的,因此您可以使用
preventDefault()
停止编辑器的显示。您可能需要存储已拖动/正在拖动的项目,以防止仅在发生拖放时发生编辑事件。我不确定
itemeditbeging
和拖放事件的调度顺序,因此需要进行一点实验。使用
trace
是调试这些事件的好方法


我能想到的另一个解决方案是,当拖放开始时,将
editable
设置为
false
,当拖放完成时,将其设置为
true

尝试收听
itemEditBeging
事件。它是可取消的,因此您可以使用
preventDefault()
停止编辑器的显示。您可能需要存储已拖动/正在拖动的项目,以防止仅在发生拖放时发生编辑事件。我不确定
itemeditbeging
和拖放事件的调度顺序,因此需要进行一点实验。使用
trace
是调试这些事件的好方法

我能想到的另一个解决方案是在拖放开始时将
editable
设置为
false
,并在拖放完成时将其设置为
true

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";
    }