我使用临时数组来填充ListCollectionView。稍后,我有一个屏幕,使用ListCollectionView作为dataProvider显示DataGrid。用户可以通过选择行然后单击“删除”按钮来删除DataGrid中的行。
如何访问ListCollectionView使用的原始源,并从那里删除该项?
执行此操作后,该项目是否也会自动从ListCollectionView中删除,并且不再显示在DataGrid中(或者是否需要刷新某些内容)?
更新1
以下听起来好像我在正确的轨道上? (我想从ListCollectionView的源(是“.list”?)中删除它,而不仅仅是从ListCollectionView中删除它。)
[Bindable] private var _myLCV:ListCollectionView=new ListCollectionView(new ArrayList());
...
var obj:Object = _myLCV.getItemAt(myGrid.grid.selectedIndex); // get item user selected
_myLCV.list.removeItemAt( _myLCV.list.getItemIndex(obj) ); // delete item from source
更新2
我不确定为什么(我正在使用SDK 4.5.1A),但我似乎需要在UPDATE 1中将以下代码行添加到上面的代码中,以便DataGrid可靠地更新并显示已删除的代码行:
_myLCV.refresh();
答案 0 :(得分:2)
我的冲动是建议使用removeItemAt从ListCollectionView中删除项目。
如果你真的想要访问源而不是处理集合,那么它取决于你正在使用的ListCollectionView的类型。
如果您正在使用ArrayCollection,则可以使用source property访问源代码。 如果您使用的是XMLListCollection,则可以使用source property。
访问源代码ListCollectionView中没有固有的source属性,但List property可能就足够了。
在任何情况下,从ListCollectionView或ListCollectionView的源中删除项应该会自动更新DataGrid。如果没有,您可以在集合上调用refresh() method。
答案 1 :(得分:0)
也就是说,如果您的目的是“刷新”数据网格以使其与LIstCollectionView保持同步,则通过修改数组然后刷新将不再必要。