Flex предотвращает редактирование сетки данных после перетаскивания - PullRequest
1 голос
/ 23 февраля 2012

У меня есть AdvancedDataGrid с редактируемым параметром "true". Моя проблема в том, что после успешного перетаскивания элемент редактируется, и я не хочу, чтобы это произошло.

Я пытался создать пользовательскую AdvancedDataGrid с помощью:

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

Но это не работает, и я просто не знаю, нужно ли мне останавливать событие с помощью protectDefault или чем-то еще. Я также изучил код Adobe AdvancedDataGrid, и кажется, что после события dragcomplete ничего не отправляется ...

Как я могу остановить это надоедливое издание (или фокус) после перетаскивания?

РЕДАКТИРОВАТЬ 27/02/2012

Решение заключается в прослушивании событий 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 Ответ

1 голос
/ 26 февраля 2012

Попробуйте прослушать событие itemEditBeginning. Его можно отменить, поэтому вы можете использовать preventDefault(), чтобы остановить отображение редактора. Вам, вероятно, нужно будет хранить элементы, которые были перетаскиты / перетаскиваются, чтобы предотвратить событие редактирования, только когда произошло перетаскивание. Я не уверен, в каком порядке отправляются события itemEditBeginning и drag & drop, поэтому нужно немного поэкспериментировать. Использование trace - хороший способ отладки этих событий ...

Другое решение, которое я могу придумать, - установить editable на false, когда начинается перетаскивание, и установить его на true, когда перетаскивание завершено.

...