【问题标题】:Flex prevent datagrid from editing after a drag & dropFlex 阻止数据网格在拖放后进行编辑
【发布时间】:2012-02-23 14:53:50
【问题描述】:

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

我试图用这个创建一个自定义的 advancedDataGrid:

override protected function dragCompleteHandler(event:DragEvent):void{
            trace("call dragCompleteHandler");
            super.dragCompleteHandler(event);
            clearAllSelection();
            selectedItem = null;
        }

但它不起作用,我只是不知道是否必须使用 preventDefault 或其他方式停止事件。我还查看了 Adob​​e AdvancedDataGrid 代码,似乎在 dragcomplete 事件之后没有发送任何内容...

如何在拖放后停止这个烦人的编辑(或焦点)?

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

【问题讨论】:

    标签: apache-flex drag-and-drop advanceddatagrid


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-11
      • 1970-01-01
      • 2013-07-15
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      • 2010-09-18
      • 2017-06-01
      • 1970-01-01
      相关资源
      最近更新 更多