2011-10-07 66 views
1

我有一個高級數據網格並使用arraycollection填充了一些數據。而我正在過濾arraycollection,arraycollection索引發生了變化。ArrayCollection索引在過濾arraycollection後發生了變化

Arraycollection:- [0] - name: abc 
        [1] - name: hello 
        [2] - name: hello1 
        [3] - name:hai 

過濾ArrayCollection中的「地獄」後,該陣列集合顯示像下面:

Arraycollection:- 
        [0] - name: hello1 
        [1] - name: hello 

我能知道爲什麼指數得到了過濾器之後改變的原因嗎?

*沒有用於過濾的服務器端代碼。它只是flex側過濾。

+0

你可以添加一行來過濾你的arr。 – ymutlu

回答

2

ArrayCollection不是關聯數組或映射,它是用整數索引的普通數組的封裝。

也就是說,你不能有僅包含在索引1和元件2

documentation of filter的數組:

陣列和構造在每個項目執行一個測試功能對於指定函數返回true的所有項目的新數組。 如果某個項目返回false,則它不包含在新數組中。

0

ArrayCollection有幾個非常好的和獨特的屬性。
One property is that it can be bound.
此綁定屬性允許您將集合設置爲像TileList這樣的Flex對象的數據提供者。
因此,當收集過濾時,TileList將使用過濾後的數據自動重新填充而無需附加代碼。

另一個屬性是源。這是未過濾/未更改的數據。

將過濾器應用於集合時,新數據將成爲源減去過濾器測試失敗的元素。
正如您所看到的,您的過濾器只傳遞了2個項目並返回了2個元素的新集合。
您不能假定任何給定元素的索引值不會改變 也可以使用arrCol.refresh();在應用數據綁定工作的過濾器後。