如何在弹性列表组件中创建项目编辑器提交它的更改?

时间:2009-05-19 16:19:32

标签: flex list itemeditor

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

3 个答案:

答案 0 :(得分:0)

您将需要使用验证器来验证数据,我想可能会对updateComplete执行某些操作并更改事件以延迟更新列表组件:

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

答案 1 :(得分:0)

我会使用数据绑定,让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;
    }
}

答案 2 :(得分:0)

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

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

通常,当您从单元格中聚焦时,List将为您处理此事件的调度。我不确定它的属性是否在我的头脑中,但你应该能够在你的按钮点击处理程序中构建这个事件,然后自己发送它。