Apache flex 从搜索结果中删除所选项目

Apache flex 从搜索结果中删除所选项目,apache-flex,search,datagrid,advanceddatagrid,arraycollection,Apache Flex,Search,Datagrid,Advanceddatagrid,Arraycollection,用例: 最终用户搜索某个对象,并返回一个带有结果对象的ArrayCollection。这将显示在数据网格中 最终用户选择一些搜索结果,并将其“移动”到另一个datagrid以供以后使用 最终用户进行另一次搜索 问题: 某些搜索结果可能包含用户先前已选择并移到第二个datagrid的内容。我想从第二个搜索结果中删除这些内容 如何在Flex代码中快速高效地执行此操作?在两个数组集合上都使用disableAutoUpdate() 循环第一个项目,对于第二个项目的每个项目,如果第一个项目中存在,则将其删

用例:

  • 最终用户搜索某个对象,并返回一个带有结果对象的ArrayCollection。这将显示在数据网格中
  • 最终用户选择一些搜索结果,并将其“移动”到另一个datagrid以供以后使用
  • 最终用户进行另一次搜索 问题: 某些搜索结果可能包含用户先前已选择并移到第二个datagrid的内容。我想从第二个搜索结果中删除这些内容

    如何在Flex代码中快速高效地执行此操作?

    在两个数组集合上都使用disableAutoUpdate()

    循环第一个项目,对于第二个项目的每个项目,如果第一个项目中存在,则将其删除(或根据您真正想要的调整算法-不确定)

    在结尾处启用enableAutoUpdate()

    如果没有调度事件,则可以快速循环数组集合

    第二种选择是,您还可以循环使用由数组组成的廉价副本,即arraycollection.source.concat(),如果所有项都是相同类型的,则甚至可以循环使用向量。这将提供最大的速度,但从长远来看,您可能会失败,因为最终需要转换回数组集合


    所以我会坚持第一个选项。

    目前,我已经实现了一个哈希集合(extensedarraycollection)。散列只允许唯一的值,所以最终,它满足了我的目的,即使用户可能会对UI感到困惑。以后可能会实施上述方法。:)

    我相信这些方法也会像我所想的那样奏效。我想我是在试图避免嵌套for循环,因为这些数组可能会变得相当大……除非它们是数百万条记录——你应该没问题。