Question

Je vais avoir des problèmes lors de l'appel getItemIndex sur un ArrayCollection avec un ensemble de filterFunction.

Je fais quelque chose comme myAC.removeItemAt(myAC.getItemIndex(myObject)), qui fonctionne très bien lorsque le filtrage n'a pas été appliquée. Dès que le filtrage est appliqué, getItemIndex semble revenir -1 dans tous les cas.

Quelqu'un at-il rencontré avant? Ce que la meilleure façon de supprimer un élément de former une ArrayCollection filtrée?

Merci beaucoup.

Evan

Était-ce utile?

La solution

Quel est exactement votre filtre filtrant? Si vous avez filtré sur tout, getItemIndex doit retourner -1.

Espérez-vous de supprimer des éléments qui sont encore visibles lorsque votre filtre a été appliqué? Si vous voulez toujours supprimer un élément qui est filtré, vous pouvez désactiver temporairement le filtre:

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

// remove item

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

Autres conseils

Je pense que vous trouverez il y a un objet source dans le ArrayCollection. Ce que vous voyez est une vue des données sous-jacentes avec une sorte ou filtre appliqué. Vous voulez vraiment supprimer de l'objet source sous-jacente.

Chaque fois que je fais affaire avec l'ajout et la suppression d'éléments de ArrayCollections dans Flex, je l'ai toujours gardé une copie de la ArrayCollection originale. Tout ajout ou la suppression des articles arriver à cette copie originale.

Une fois que les modifications ont été apportées à l'original, je propose les avant à la liste filtrée.

Retirez de la source directement

arrayCollection.source.splice(i, 1)

Ouais, donc je ne trouve que je changeais la propriété de l'objet - à celui qui aurait filtré il - avant d'essayer de l'enlever. Bien sûr, je recevrais -1 dans ce cas. Mon erreur.

a fini par aller avec votre suggestion, Stiggler. Il semble fonctionner très bien, mais il semble qu'il devrait y avoir une façon moins hackish pour gérer ce genre de chose. Peut-être un paramètre que vous pourriez passer à removeItemAt qui vous permettra d'accéder à la collection non filtrée.

Quoi qu'il en soit, grâce à vous deux pour vos réponses. Très apprécié.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top