• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flex und AIR > Flex allgemein

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-07-2009, 17:00   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2008
Beiträge: 114
Dataprovider - mal wieder

Hallo Leute,

ich habe folgendes Problem:

ich will einen Datagrid füllen - die Spaltenüberschriften bzw. datafields bekomme ich teilweise dynamisch aus einer ArrayCollection.

Ungefähr so:
Code:
			this.gridCols = new Array();
			gridCols.push(new DataGridColumn("Taskname"));
			for(var i:int = 0; i < this.columns.length; i++)
			{
				gridCols.push(new DataGridColumn(this.columns.getItemAt(i).SpaltenName));
			}
			
			this.overviewWnd.overviewGrid.columns = gridCols;
Das klappt auch soweit.
Doch wenn es dann ans befüllen geht wirds schwierig.
Die Spaltennamen die ich aus meiner Collection hole (this.columns.getItemAt(0).SpaltenName) werden nicht erkannt und somit die daten auch nicht in die Spalte geschrieben...

Code:
			var all:ArrayCollection = new ArrayCollection();
			all.addItem({
				Taskname: "huhu",
				this.columns.getItemAt(0).SpaltenName: "hallo" //hier besteht das Problem
			});
			
			this.overviewWnd.overviewGrid.dataProvider = all;
Wie muss das this.columns.getItemAt(0).SpaltenName aussehen damit der Inhalt davon als datafield für das datagrid genommen wird.

Vielen dank

Grüße Sythus
Sythus ist offline   Mit Zitat antworten
Alt 15-07-2009, 22:54   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 11.856
Das kann ja auch nicht gehen. Object Instanzen kann man so nicht erzeugen - will man auch nicht, weil du so nie weisst, welche Properties es gibt und welche nicht. Gerade in generischen Szenarien ist das nicht sinnvoll.
Omega Psi ist offline   Mit Zitat antworten
Alt 15-07-2009, 22:57   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2008
Beiträge: 114
Doch Omega, ich weiß nämlich nicht wieviele Spalten mein DataGrid haben wird.. das hängt von externen Gegebenheiten ab.


Okay also ich komm nicht wirklich weiter, hier nochmal genau erklärt wasmich bedrückt:

Stellt euch vor ihr habt 2 Arrays, Array1 und Array2..
im Array1 stehen die Namen und im Array2 die werte...

nun möchte ich gerne einen dataprovider zb eine arraycollection damit aufbauen um später ein datagrid damit zu füllen:

Code:
var dp:ArrayCollection = new ArrayCollection({
                array1[0]:array2[0],
                array1[1]:array2[1],
                array1[2]:array2[2]
});
Wenn ich wüsste wieviele Elemente in den Arrays sind wäre das ja kein problem (siehe oben)

Aber was wenn ich nicht weiß wieviel Elemente in den Arrays sind.. also ich nicht weiß wieviele Spalten mein Datagrid haben wird.
Dann müsste ich die arrays mit einer for oder while schleife durchgehen, aber wie kriege ich eine Arraycollection mit einer Schleife genauso gefüllt wie oben in meinem beispiel.

Danke für jede Hilfe.. ich komm echt nicht weiter

Geändert von Sythus (15-07-2009 um 23:05 Uhr)
Sythus ist offline   Mit Zitat antworten
Alt 16-07-2009, 08:24   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 11.856
Man verwendet ja Arrays weil eben nicht weiss, wie viel, wie lang etc. Ich würde mir ein Metamodell erstellen, aus dem du dann die Tabelle generierst. Zwei Klassen: TableMetaModel und ColumnMetaModel. Ändert sich eine der Instanzen, updatest du deine View.
Omega Psi ist offline   Mit Zitat antworten
Alt 16-07-2009, 08:43   #5 (permalink)
Neuer User
 
Registriert seit: Dec 2008
Beiträge: 114
Die Idee klingt gut, aber richtig was drunter vorstellen kann ich mir nich (umsetzung)^^ aber ich denk mal drüber nach - danke

Geändert von Sythus (16-07-2009 um 08:50 Uhr)
Sythus ist offline   Mit Zitat antworten
Alt 24-02-2010, 09:29   #6 (permalink)
Neuer User
 
Registriert seit: Feb 2010
Beiträge: 2
Also ich hänge an ziemlich der gleichen Sache und wollte deswegen keinen neuen Post machen.

Ich rufe ein Webservice auf, dieser liefert mir als Ergebnis ein Result Array. Dies hat einen sehr "interessanten" Aufbau:

array.lastResult[0] = Liefert mir die Anzahl der Spalten (Beispiel 2)
array.lastResult[1] = Liefert mit die Anzahl der Reihen (Beispiel 3)
danach folgt eine Reihe nach der anderen, wobei die erste Reihe die Spaltennamen enthalten.

Also sieht es bei dem obigen Beispiel in etwa so aus:

[2] [3] [Name] [Vorname] [Müller] [Hans] [Heinze] [Heinz]

Ich schaffe es die Spalten dynamisch mit folgenden Code zu erstellen:

PHP-Code:
for (var i:int 1<= countyi++)
                        {
                            
                            
j=i+1;
                            
oCol userRequest.executeQuery.lastResult[j];
                            var 
dgc:AdvancedDataGridColumn = new AdvancedDataGridColumn(oCol);
                            
dgc.dataField oCol;
                                
                        
cols.push(dgc);
                        }
                        
                        
dataGrid.columns cols
Doch nun scheitere ich an der gleichen Stelle wie der Threadersteller, beim Befüllen des Datagrid, bzw. des Dataproviders, dieser ist komplett leer.

So war in etwa mein ansatz, wobei hier noch eine 2. forschleife fehlt.

PHP-Code:
for (0<= countyi++)
                        {
                            
tableEntries.addItem({(userRequest.executeQuery.lastResult[i]):userRequest.executeQuery.lastResult[j]});
                        } 
Dabei bekomme ich zwar meine Daten in Datengrid rein, aber für jeden Wer eine einzelne Reihe.
Im Beispiel von oben würde dann in der Reihe 1 (Spalte 1): Müller stehen, in Reihe 2 (Spalte 2): Hans, in Reihe 3 (Spalte1): Heinze, in Reihe 4 (Spalte 2): Heinz. Statt alles nur in 2 Reihen.

Jemand der mir weiterhelfen kann?

Geändert von LazySiege (24-02-2010 um 09:30 Uhr)
LazySiege ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 00:03 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele