拖动后,Flex会阻止数据网格编辑。下降

时间:2012-02-23 14:53:51

标签: flex drag-and-drop advanceddatagrid

我有一个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";
    }

1 个答案:

答案 0 :(得分:1)

尝试收听itemEditBeginning事件。它是可取消的,因此您可以使用preventDefault()来阻止编辑器显示。您可能需要存储已拖动/正在拖动的项目,以便仅在拖动和放置时阻止编辑事件。已经发生了下降。我不确定itemEditBeginning和拖拽&调度drop事件,所以需要进行一些实验。使用trace是调试这些事件的好方法......

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