我可以使用什么事件处理程序来捕获已在flex数据网格中更改的新值。

时间:2010-10-11 12:11:49

标签: flex events datagrid itemeditor

我有一个可编辑的网格,并希望根据已编辑的单元格更新值,我在itemEditEndHandler中这样做,这样当他们完成编辑单元格时,我会更新依赖于它的其他单元格。唯一的问题是itemEditEndHandler新值尚未注册。如果我尝试获取单元格的值,我发现它仍然给我旧值而不是我输入的新值。

3 个答案:

答案 0 :(得分:2)

在DataGrid的dataProvider上收听collectionChange事件。

只要集合发生更改,

ListCollectionView个对象(即ArrayCollection和XMLListCollection对象)就会调度CollectionEvent.COLLECTION_CHANGE事件。检查调度事件的kind属性 - 如果是CollectionEventKind.UPDATE,则表示已更新一个或多个项目。事件的items数组将保存更新的项目。

答案 1 :(得分:0)

如果你的datagrid使用的是一个ArrayCollection的dataProvider,你可以在itemEditor的change事件触发的处理程序中调用它的refresh()方法,然后调用dataGrid的invalidateList()方法。

答案 2 :(得分:0)

使用 gridItemEditorSessionSave

<s:DataGrid gridItemEditorSessionSave="dataGrid_gridItemEditorSessionSaveHandler(event)" >
...
...
...
</s:DataGrid>

并在actionscript中

protected function dataGrid_gridItemEditorSessionSaveHandler(event:GridItemEditorEvent):void
            {
                Alert.show("Edited");
            }