2011-10-07 7 views
1

고급 DataGrid가 있고 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 

i는 인덱스 필터 뒤에 변경있어 이유를 알 수 있습니까?

* 필터링을위한 서버 측 코드가 없습니다. 플렉스 사이드 필터링 만 사용합니다.

+0

arr을 필터링하는 선을 추가 할 수 있습니까? – ymutlu

답변

2

연관 배열이나지도가 아닌 ArrayCollection은 정수로 인덱싱 된 일반 배열의 래퍼입니다.

배열 및 구조의 각 항목에 테스트 함수를 실행 :

즉, 당신은 단지 documentation of filter에서 인덱스 1의 요소와 2

포함 된 배열을 가질 수 없습니다 지정된 함수에 대해서 true를 돌려주는 모든 항목의 새로운 배열 항목이 false를 반환하면 새 배열에 포함되지 않습니다.

0

ArrayCollection에는 매우 훌륭하고 고유 한 몇 가지 속성이 있습니다.
One property is that it can be bound.
이 바인딩 속성을 사용하면 컬렉션을 TileList와 같은 flex 개체에 대한 데이터 제공자로 설정할 수 있습니다.
그래서 컬렉션이 필터링되면 TileList는 필터링 된 데이터를 사용하여 추가 코드없이 자동으로 다시 채워집니다.

또 다른 속성은 소스입니다. 이것은 필터링되지 않거나 변경되지 않은 데이터입니다.

필터가 컬렉션에 적용되면 새 데이터는 소스에서 필터 테스트에 실패한 요소를 뺀 값이됩니다.
필터에서 볼 수 있듯이 2 개의 항목 만 통과했으며 새로운 2 개의 요소 컬렉션을 반환했습니다.
주어진 요소의 인덱스 값이 변경되지 않는다고 가정 할 수 없습니다. arrCol.refresh(); 데이터 바인딩을위한 필터를 적용한 후에

관련 문제