Индекс ArrayCollection изменился после фильтрации массива - PullRequest
1 голос
/ 07 октября 2011

У меня есть расширенная сетка данных и заполнение некоторых данных с помощью arraycollection.И я фильтрую коллекцию массива, индекс массива массива изменился.

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

После фильтрации коллекции массива как «ад» коллекция массива отображается следующим образом:

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

Можетя знаю причину, по которой индекс изменился после его фильтрации?

* нет кода на стороне сервера для фильтрации.это только гибкая боковая фильтрация.

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

ArrayCollection не ассоциативный массив или карта, это обертка для обычного массива, индексированного целыми числами.

Т.е. у вас не может быть массива, который содержит элемент только с индексами 1 и 2.

Из документации фильтра :

Выполняет тестовую функцию для каждого элемента в массиве и создает новый массив для всех элементов, которые возвращают true для указанной функции. Если элемент возвращает false, он не включается в новый массив.

0 голосов
/ 07 октября 2011

ArrayCollection обладает несколькими очень приятными и уникальными свойствами.
Одно свойство состоит в том, что оно может быть связано.
Это свойство привязки позволяет вам установить коллекцию в качестве поставщика данных для гибкого объекта, такого как TileList.
Поэтому, когда коллекция фильтруется, TileList будет автоматически заполняться с использованием отфильтрованных данных без дополнительного кода.

Другое свойство является источником. Это нефильтрованные / неизмененные данные.

Когда к коллекции был применен фильтр, новые данные будут источником минус элементы, которые не прошли проверку фильтра.
Как видите, ваш фильтр пропустил только 2 элемента и вернул новую коллекцию из 2 элементов.
Вы НЕ МОЖЕТЕ предположить, что значения индекса любого данного элемента не изменятся Также используйте arrCol.refresh (); после применения фильтра для привязки данных к работе.

...