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

我有

  1. 一个名为 ordersAC 的数组集合,其中包含 orderId 等动态数据。
  2. 另一个数组集合是数据网格的数据提供者,称为 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">

希望能理解我的问题。

谢谢。

【问题讨论】:

    标签: actionscript-3 apache-flex datagrid


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-27
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      • 2014-03-20
      • 2014-03-04
      相关资源
      最近更新 更多