[英]How should one view different filtered data in different datagrids that use the same underlying ArrayCollection?
我有一個全局arraycollection,其中包含與一種數據集類型有關的所有信息。 我希望有不同的數據網格來過濾數據,通常通過將特定的列等同起來。 應該怎么做呢?
編輯:到目前為止,我的想法是:如果有一個用於數據網格的過濾器函數,而不是基礎的數組集合,那將解決問題。 或者,如果可以用“子集arraycollection”反映全局arraycollection,該子集自動過濾全局arraycollection,並且當然自動反映基礎數組collection中的更改,那么也可以這樣做。 這些解決方案中的任何一個都是自然的/瑣碎的嗎?
您應該為此使用ListCollectionView 。
它允許對基礎源集合的自定義過濾器。 對源集合的更改將反映在過濾視圖中。
即:
[Bindable]
public var allTheData:ArrayCollection;
<mx:ListCollectionView list="{allTheData}" filterFunction="myFilterFunction" id="filteredView1" />
<mx:DataGrid dataProvider="{filteredView1}" />
這是一種方法。 盡管此示例使用列表,但它應適用於DataGrid,因為它是要過濾的集合而不是視圖。 “添加列表項”按鈕和addListItems()方法顯示了一種在基礎數據更改時更新已過濾列表的方法。
<fx:Script>
<![CDATA[
private function populateListA(collection:ArrayCollection):ArrayCollection
{
var ac:ArrayCollection = new ArrayCollection(collection.source);
ac.filterFunction = filterListA;
ac.refresh();
return ac;
}
private function populateListB(collection:ArrayCollection):ArrayCollection
{
var ac:ArrayCollection = new ArrayCollection(collection.source);
ac.filterFunction = filterListB;
ac.refresh();
return ac;
}
private function filterListA(item:Object):Boolean
{
return item == "ListA";
}
private function filterListB(item:Object):Boolean
{
return item == "ListB";
}
private function addListItems():void
{
arrayCollection.addItem("ListA");
arrayCollection.addItem("ListB");
listA.dataProvider = populateListA(arrayCollection);
listB.dataProvider = populateListB(arrayCollection);
}
]]>
</fx:Script>
<fx:Declarations>
<s:ArrayCollection id="arrayCollection">
<fx:Array>
<fx:String>ListA</fx:String>
<fx:String>ListA</fx:String>
<fx:String>ListA</fx:String>
<fx:String>ListB</fx:String>
<fx:String>ListB</fx:String>
<fx:String>ListB</fx:String>
</fx:Array>
</s:ArrayCollection>
</fx:Declarations>
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:List id="listA"
dataProvider="{populateListA(arrayCollection)}"/>
<s:List id="listB"
dataProvider="{populateListB(arrayCollection)}"/>
<s:Button click="addListItems()"
label="Add List Items"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.