从过滤的ArrayCollection移除项目
-
16-09-2019 - |
题
我在具有集合的filterFunction一个ArrayCollection调用getItemIndex当具有一些问题。
余像做myAC.removeItemAt(myAC.getItemIndex(myObject))
,当尚未应用的滤波,工作正常。一旦应用过滤,getItemIndex似乎返回-1在任何情况下。
有没有人碰到这之前?什么的最佳方式删除项目形成经滤波的ArrayCollection?
非常感谢。
埃文
解决方案
到底什么是你的过滤器过滤掉?如果你已经过滤掉一切,getItemIndex应该返回-1。
您希望当已应用于您的过滤,以去除仍然可见的项目?如果你还是想删除会筛选出的项目,你可以暂时禁用过滤器:
var filter:Function = ac.filterFunction;
ac.fiterFunction = null;
ac.refresh();
// remove item
ac.filterFunction = filter;
ac.refresh();
其他提示
我想你会发现有一个ArrayCollection内源对象。你们看到的是应用了排序或筛选基础数据的视图。你真的想从底层源对象删除。
我已经处理了添加和Flex中ArrayCollections删除项目的任何时间,我一直保持着原始的ArrayCollection的副本。任何添加或物品的去除发生在该原件。
一旦更改了原始制作,我移动这些期待的过滤列表。
从源删除它直接
arrayCollection.source.splice(i, 1)
是啊,所以我也发现,我正在改变对象的属性 - 这将有它过滤掉一个 - 试图将其删除之前。当然,我会得到-1在这种情况下。我的错误。
结束了你的建议,Stiggler去。似乎做工精细,虽然它看起来应该有处理这种类型的东西不太hackish的方式。也许一个参数,你可以传递给removeItemAt,将让您访问未经过滤的集合。
无论如何,感谢你们两位您的答复。十分赞赏。
不隶属于 StackOverflow