| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jun 2002 Ort: München
Beiträge: 50
| DataGrid, dataProvider und E4X
Hi, habe ein seltsames Problem eines sich auf mysteriöse Weise verändernden dataProviders eines DataGrids. Mit von der Partie sind: Code: <mx:XML id="xml" xmlns="" source="data.xml" format="e4x"/> Code: <mx:DataGrid id="grdResult" dataProvider="{xml.nodeFoo.bar.name}"/> Code: public function filter():void {
// xml ist zu diesem Zeitpunkt dataProvider des Datagrids grdResult
// Das Ergebnis soll nun gefiltert und neu zugewiesen werden
var nodes:XMLList = new XMLList(xml.nodeFoo.bar.nochMehr.(text()=="bla"));
var newRslt:XMLListCollection = new XMLListCollection;
// da ich jeweils den parent eines jeden gefunden nodes brauche, muss ich darüber iterieren (wenn es nur ein parentS() gäbe ...
for each(var node:XML in nodes) {
var newNode:XML = node.parent();
// dieses addItem() hat zur Folge, dass sich das ursprüngliche XML verändert (<mx:XML id="xml") und einen(!) von zwei gefundenen nodes zusätzlich anhängt
newRslt.addItem(newNode);
}
grdResult.dataProvider = newRslt;
} Code: newRslt Kann mir jemand erklären, was hier vor sich geht? Herzlichsten Dank für Eure Hilfe und Ideen! Grüße, Thomas |
| | |
| | #2 (permalink) |
| poke Registriert seit: Dec 2002 Ort: Iserlohn [NRW]
Beiträge: 2.304
| afaik ist das ähnlich wie im DOM, dass ein Element nur ein Parent haben darf. Hast du also ein Element X innerhalb des Objekts Y und fügst dieses X einem Objekt Z hinzu, wird es aus Y herausgenommen. Ich weiß nicht, inwiefern das auf E4X zutrifft, da ich einen solchen Fall noch nie hatte, ich könnte es mir aber gut vorstellen. |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Jun 2002 Ort: München
Beiträge: 50
|
Ich konnte das Problem nun lösen, wenngleich auch noch nicht komplett verstehen: Wenn man anstatt des gefunden nodes nur eine Kopie an die neue XMLListCollection anhängt, funktioniert die Sache wie erwartet: Code: newRslt.addItem(newNode); Code: newRslt.addItem(newNode.copy()); Viele Grüße, Thomas |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |