DataGrid zeigt Objektinhalte nicht an

Stephan Liebig

Erfahrenes Mitglied
Hi,

ich kapiere gerade nicht, was mit meinem DataGrid los ist. Ich erzeuge einige Objekte und stecke die in eine ArrayCollection. Diese verwende ich dann später in einem
DataGrid als dataProvider. Mein Problem: Das DataGrid zeigt zwar, dass die 20 Zeilen da sind, allerdings werden die Inhalte der Objekte nicht angezeigt.
Woran liegt das?

Hier mein Code:

DataGrid:
Code:
<mx:DataGrid x="416" y="275" width="675" height="357" dataProvider="{dataGridProvider.source}">
					<mx:columns>
						<mx:DataGridColumn headerText="Jahr" dataField="jahr" />
						<mx:DataGridColumn headerText="Leistung" dataField="leistung"/>
						<mx:DataGridColumn headerText="Stromverkauf" dataField="stromverkauf"/>
						<mx:DataGridColumn headerText="Eigennutung" dataField="eigennutzung"/>
						<mx:DataGridColumn headerText="Instandhaltung / Versicherung" dataField="instandhaltung"/>
						<mx:DataGridColumn headerText="Überschuss" dataField="ueberschuss"/>
					</mx:columns>
				</mx:DataGrid>

Klasse-Objekt:
Code:
public class DataGridRow
	{
		var jahr:int = new int();
		var leistung:Number = new Number();
		var stromverkauf:Number = new Number();
		var eigennutzung:Number = new Number();
		var instandhaltung:Number = new Number();
		var ueberschuss:Number = new Number();
		
		//... construct + setter und getter

	}

Die einzelnen Objekte tu ich dann via
Code:
datagridProvider.addItem(zeile);

Der ArrayCollection hinzufügen.

Wo ist mein (Denk-)Fehler
 
Hi!
Du versuchst beispielsweise in deinem Datagrid auf das Feld "jahr" zuzugreifen,welches nach aussen hin nicht sichtbar ist. Daher hast du ja auch die getter/setter erstellt. Interessant wäre es natürlich jetzt zu wissen, wie diese getter/setter heißen. Denn da dein Datagrid leere Zeilen anzeigt, erkennt er diese wohl nicht.
Entweder schenkst du dir das mit den getter/settern und deklarierst die Felder als public, oder du machst es so:
Code:
public class DataGridRow
	{
		private var _jahr:int = new int();
		....


		public function get jahr():int{
			return _jahr;
		}
		public function set jahr(j:int):void{
			_jahr = j;
		}

	}
	
}


Grüße!
 
Gib deinem DataGrid über MXML eine ID.
Um deinem DG einen Eintrag hinzuzufügen sage einfach mal das:
PHP:
//AS3 Code
deinDG.dataProvider.addItem({spaltenName:Inhalt, <usw. für jede spalte>});
Du musst immer den Spaltenname ansprechen, welchen du definiert hast(z.B.:Jahr, Leistung, usw.).
Mit deinem DataGridRow-object und allen anderen Sachen läufst du nur im Kreis.
 
Hi
Mit deinem DataGridRow-object und allen anderen Sachen läufst du nur im Kreis.
Das musst du mir aber mal erklären, wieso man so im Kreis läuft? Eine eigene Klasse zu erstellen, und dann auf deren öffentliche Felder bzw. Getter/Setter zuzugreifen ist eine gängige, vernüftige Praxis.
Stefans Idee war daher im Ansatz schon richtig...

Und warum ich unbedingt dem Datagrid direkt die Datensätze zufügen soll, ist mir auch nicht klar...
Grüße!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück