0

我有一个列表组件,并且我有一个用于列表中项目的项目编辑器。我希望用户在完成更改后单击一个按钮,因为我让他们在编辑器中编辑多条数据,并且我还想在关闭编辑器之前验证数据。我只是不知道如何处理按钮的单击事件以使项目编辑器关闭并将其更改提交给数据提供者。

4

3 回答 3

0

要处理 List 控件中多个字段的编辑,您需要捕获 ItemEditEnd 事件,然后手动更改您感兴趣的字段。

请参阅此处的“示例:使用带有列表控件的自定义项目编辑器” - http://livedocs.adobe.com/flex/3/html/help.html?content=celleditor_9.html#226555

通常,当您离开单元格时,List 会为您处理此事件的调度。我不确定它的属性,但你应该能够在你的按钮单击处理程序中构造这个事件,然后自己调度它。

于 2009-05-20T14:52:17.507 回答
0

您将需要使用验证器来验证数据,我认为可能会对 updateComplete 和更改事件做一些事情以延迟列表组件的更新:

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

于 2009-05-19T16:32:25.110 回答
0

I would use data binding and let Flex do the work for you.

Have an object myObject with a bindable property myList:IList. Bind the display to this object.

When you start editing, copy that list.

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;
    }
}
于 2009-05-19T18:58:00.087 回答