根据flex中的arraycollection数据过滤datagrid

Posted

技术标签:

【中文标题】根据flex中的arraycollection数据过滤datagrid【英文标题】:Filter datagrid based on arraycollection data in flex 【发布时间】:2015-03-17 01:39:16 【问题描述】:

我有

    一个名为 ordersAC 的数组集合,其中包含 orderId 等动态数据。 另一个数组集合是数据网格的数据提供者,称为 ordersRecordAC,包含(orderId、orderTitle、orderDescription、价格)。

DataGrid 包含 4 列:

No.   OrderTitle   OrderDescription   Price

现在,DataGrid 有 100 条记录。我想使用每次动态更改的第一个 arraycollection(ordersAC) 过滤 DataGrid。

like: ordersAC 有 5 个 orderId 1521, 2154, 2233, 5484, 2351

那么在 DataGrid 中只显示 5 条记录依赖于orderId

我尝试了以下方法但没有奏效:

private function onSearchRecordClick(event:FlexEvent):void

    var orderAC:ArrayCollection = ordersGridId.orderAC;
    for(var i:int = 0; i<ordersRecordAC.length-1;i++)
    
        orderAC.filterFunction = filterRows; 

        function filterRows(item1:Object):Boolean 
        
            if(item1.orderId == ordersRecordAC[i])
                return true;
            else
                return false;
        
    
    orderAC.refresh();


<mx:DataGrid id="ordersGridId" lockedColumnCount="5" dataProvider="orderAC" sortableColumns="true">

希望能理解我的问题。

谢谢。

【问题讨论】:

【参考方案1】:

我会使用您的代码执行以下操作。

private var orderAC:ArrayCollection; // assign this somewhere else

private function onSearchRecordClick(event:FlexEvent):void

  if(!orderAC.filterFunction)
    orderAC.filterFunction = filterRows; 
  orderAC.refresh();


private function filterRows(item1:Object):Boolean 

  for(var i:int = 0;i < ordersRecordAC.length;i++)
  
    if(item1.orderId == ordersRecordAC[i])
      return true;
  
  return false;

【讨论】:

以上是关于根据flex中的arraycollection数据过滤datagrid的主要内容,如果未能解决你的问题,请参考以下文章

将arrayCollection从flex传递给java

如何在 Flex 中对 ArrayCollection 进行排序

flex ArrayCollection的新增与删除的同步

根据在Flex中文本区域输入的用户输入文本过滤/搜索Array Collection的列表框

我可以在不更改项目顺序的情况下将 JSON 字符串转换为 Flex ArrayCollection 吗?

关于flex图表控件问题