Как сделать так, чтобы редактор элементов в компоненте гибкого списка фиксировал его изменения? - PullRequest
0 голосов
/ 19 мая 2009

У меня есть компонент списка, и у меня есть редактор элементов для элементов в списке. Я хотел бы иметь кнопку, которую пользователь нажимает, как только они закончат свои изменения, потому что я заставляю их редактировать несколько частей данных в редакторе, и я также хотел бы проверить данные перед закрытием редактора. Я просто не знаю, что делать с событием нажатия кнопки, чтобы закрыть редактор элементов и передать изменения поставщику данных.

Ответы [ 3 ]

0 голосов
/ 19 мая 2009

Я бы использовал привязку данных и позволил бы Flex сделать всю работу за вас.

Имейте объект myObject со связываемым свойством myList: IList. Привязать дисплей к этому объекту.

Когда вы начнете редактировать, скопируйте этот список.

On MouseEvent.CLICK:

var ed:Editor // Your list editing object.
var edProvider:IList = ed.dataProvider;
var targList:IList   = myObject.myList; 

var bool:Boolean     = ( myObject.myList.length > edProvider.length );
var len:int          = ( bool )? targList.length: edProvider.length; 

var item:*           = null;

for( var i:int = 0; i < len; i++ )
{
    try // a "just in case".  You probably will never have a problem.
    {
        item = edProvider.getItemAt( i );
        targList.setItemAt( item, i );
    }
    catch( error:Error )
    {
        continue;
    }
}
0 голосов
/ 20 мая 2009

Чтобы обработать редактирование нескольких полей в элементе управления List, вам необходимо перехватить событие ItemEditEnd, а затем вручную изменить интересующие вас поля.

См. «Пример: использование редактора пользовательских элементов с элементом управления List» здесь - http://livedocs.adobe.com/flex/3/html/help.html?content=celleditor_9.html#226555.

Обычно список будет обрабатывать отправку этого события для вас, когда вы фокусируетесь вне ячейки. Я не уверен в его свойствах, но вы должны иметь возможность создать это событие в своем обработчике нажатий кнопок, а затем просто отправить его самостоятельно.

0 голосов
/ 19 мая 2009

Вы захотите использовать валидатор для проверки данных, и я думаю, что, может быть, сделать что-то с updateComplete и изменить события, чтобы отложить обновление компонента списка:

http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=celleditor_073_17.html

...