Pregunta

Estoy teniendo algunos problemas al llamar getItemIndex en una ArrayCollection con un conjunto filterFunction.

que hago algo así como myAC.removeItemAt(myAC.getItemIndex(myObject)), que funciona bien cuando no se haya aplicado el filtrado. Tan pronto como se aplica el filtrado, getItemIndex parece volver -1 en todos los casos.

¿Alguien ha llegado a través de esto antes? Cuál es la mejor manera de eliminar un elemento formar una ArrayCollection filtrada?

Muchas gracias.

Evan

¿Fue útil?

Solución

¿qué es exactamente el filtro filtrando? Si se ha filtrado a cabo todo, getItemIndex debe devolver -1.

¿Usted está esperando para eliminar los elementos que aún son visibles cuando se ha aplicado el filtro? Si aún desea eliminar un elemento que se filtra, se podría desactivar temporalmente el filtro:

var filter:Function = ac.filterFunction;
ac.fiterFunction = null;
ac.refresh();

// remove item

ac.filterFunction = filter;
ac.refresh();

Otros consejos

Creo que encontrará allí es un objeto de origen dentro de la ArrayCollection. Lo que está viendo es una vista de los datos subyacentes con una especie o un filtro aplicado. ¿De verdad quiere eliminar del objeto de origen subyacente.

Cada vez que he tratado de añadir y eliminar elementos de ArrayCollections en Flex, siempre he mantenido una copia del original, ArrayCollection. Cualquier adición o eliminación de elementos suceder a esa copia original.

Una vez que se han realizado los cambios a la original, muevo los interés la lista filtrada.

Eliminar desde el código fuente directamente

arrayCollection.source.splice(i, 1)

Sí, así me entero de que me estaba cambiando la propiedad del objeto - a uno que tendría que filtra hacia fuera - antes de tratar de eliminarlo. Por supuesto que me gustaría conseguir -1 en ese caso. Mi error.

Terminamos yendo con su sugerencia, Stiggler. Parece que funciona bien, aunque parece que debe haber una manera menos hacker para manejar este tipo de cosas. Tal vez un parámetro que podría pasar a removeItemAt que le permiten acceder a la colección sin filtrar.

De todos modos, gracias a ambos por sus respuestas. Muy apreciado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top