我使用了一个临时数组来填充ListCollectionView。稍后,我有了一个屏幕,其中显示了一个使用ListCollectionView作为dataProvider的DataGrid。用户可以通过选择行,然后单击删除按钮来删除DataGrid中的行。
如何访问ListCollectionView使用的原始源,并从那里删除项目?
这样做之后,该项目是否也会自动从ListCollectionView中删除,并且不再显示在DataGrid中(或者是否需要刷新某些内容)?
更新1
下面这句话听起来像是在正确的轨道上吗?(我想从源代码中删除它(这是“.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),但我似乎需要在更新1的上述代码中添加以下代码行,以便DataGrid可靠地更新并显示删除的行:
_myLCV.refresh();发布于 2012-08-01 08:57:22
我的冲动是建议使用removeItemAt从ListCollectionView中删除该项目。
如果您真的想访问源代码而不是处理集合,那么这取决于您使用的ListCollectionView的类型。
如果您使用的是ArrayCollection,则可以使用source property访问源代码。如果您使用的是XMLListCollection,则可以使用source property访问源代码。
ListCollectionView中没有固有的source属性,但List property可能就足够了。
在任何情况下,从ListCollectionView或ListCollectionView的源中删除项都会自动更新DataGrid。如果不是,您可以在集合上调用refresh() method。
发布于 2012-08-01 09:44:43
Spark DataGrid与其他基于列表的控件(如list甚至DataGroup )一样,将从其dataProvider中观察更改事件。改变事件可以包括项移除、更新、排序和插入。这样,只需更新控件的基础数据,就可以方便地更新控件。
也就是说,如果您的意图是“刷新”datagrid以与LIstCollectionView保持同步,那么通过修改数组然后进行刷新是不必要的。
https://stackoverflow.com/questions/11751096
复制相似问题