基于flex中的arraycollection数据过滤datagrid

时间:2015-01-19 04:37:02

标签: actionscript-3 flex datagrid

我有

  1. 一个名为 ordersAC 的数组收集,其中包含数字 动态数据,例如 orderId
  2. 另一个arraycollection是被调用的datagrid的数据提供者 ordersRecordAC ,包含(orderId,orderTitle,orderDescription,price)。

  3. DataGrid包含4列:

    No.   OrderTitle   OrderDescription   Price
    

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

    喜欢: 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 个答案:

答案 0 :(得分: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;
}