根据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的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flex 中对 ArrayCollection 进行排序
根据在Flex中文本区域输入的用户输入文本过滤/搜索Array Collection的列表框