Frage

Ich habe einige Probleme haben, wenn getItemIndex auf eine Arraycollection mit einem filter Satz aufrufen.

ich etwas tun, wie myAC.removeItemAt(myAC.getItemIndex(myObject)), der gut arbeitet, wenn die Filterung nicht angewendet wurde. Sobald Filterung angewendet wird, scheint getItemIndex zurückzukehren -1 in jedem Fall.

hat über diese, bevor jemand kommt? Was ist der beste Weg, ein Element bildet einen gefilterten Arraycollection entfernen?

Vielen Dank.

Evan

War es hilfreich?

Lösung

Was genau ist Ihre Filter herausgefiltert werden? Wenn Sie alles herausgefiltert haben, sollten getItemIndex -1 zurück.

Hoffen Sie, Elemente zu entfernen, die noch sichtbar sind, wenn Sie einen Filter angewendet wurde? Wenn Sie noch ein Element entfernen möchten, die herausgefiltert ist, könnten Sie vorübergehend den Filter deaktivieren:

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

// remove item

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

Andere Tipps

Ich denke, Sie finden es in der Arraycollection ein Quellobjekt ist. Was Sie sehen, ist ein Blick auf die zugrunde liegenden Daten mit einer Art oder Filter angewendet. Sie wollen wirklich von dem zugrunde liegenden Quellobjekt löschen.

Jedes Mal, wenn ich mit dem Hinzufügen und Entfernen von Elementen aus ArrayCollections in Flex behandelt habe, habe ich hatte immer eine Kopie der Original-Arraycollection. Jede Hinzufügen oder Entfernen von Elementen passieren zu dieser Urschrift.

Sobald die Änderungen an den ursprünglichen gemacht worden ist, ich die uns auf die gefilterte Liste zu bewegen.

Entfernen Sie es von der Quelle direkt

arrayCollection.source.splice(i, 1)

Ja, so habe ich erfahren, dass ich die Eigenschaft des Objekts wurde verändert sich - auf eine, die es herausgefiltert haben würde - vor dem Versuch, es zu entfernen. Natürlich würde ich -1 in diesem Fall. Mein Fehler.

endete mit Ihrem Vorschlag geht, Stiggler. Scheint gut zu funktionieren, wenn es wie es scheint ein weniger hackish Weg sein soll, diese Art der Sache zu behandeln. Vielleicht ein Parameter könnte man auf removeItemAt passieren, dass Sie lassen würde die ungefilterte Sammlung zugreifen.

Wie auch immer, dank euch beiden für Ihre Antworten. Sehr geschätzt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top