tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1567
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Stephan Liebig Stephan Liebig ist offline Mitglied Gold
    Registriert seit
    Jan 2006
    Beiträge
    187
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    <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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    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 :
    1
    
    datagridProvider.addItem(zeile);

    Der ArrayCollection hinzufügen.

    Wo ist mein (Denk-)Fehler
     

  2. #2
    Avatar von Artorius
    Artorius Artorius ist offline Mitglied Plutonium
    Registriert seit
    Feb 2010
    Beiträge
    222
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    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!
     
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen.
    (Johann Wolfgang von Goethe)
    ----------------------------------------------------------------------
    FLEXibler Java Entwickler

  3. #3
    Avatar von willie33
    willie33 willie33 ist offline Mitglied Silber
    Registriert seit
    May 2009
    Ort
    USS Voyager
    Beiträge
    74
    Blog-Einträge
    5
    Gib deinem DataGrid über MXML eine ID.
    Um deinem DG einen Eintrag hinzuzufügen sage einfach mal das:
    PHP-Code:
    //AS3 Code
    deinDG.dataProvider.addItem({spaltenName:Inhalt, <uswfü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.
     
    Projects:
    Pet NG: as3pet @ github - WIP
    StrawBerry Journal for BlackBerry PlayBook (successor of My Travel Diary) - WIP
    My Travel Diary for BlackBerry PlayBook - finished

  4. #4
    Avatar von Artorius
    Artorius Artorius ist offline Mitglied Plutonium
    Registriert seit
    Feb 2010
    Beiträge
    222
    Hi
    Zitat Zitat von willie33 Beitrag anzeigen
    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!
    Geändert von Artorius (07.04.10 um 15:27 Uhr)
     
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen.
    (Johann Wolfgang von Goethe)
    ----------------------------------------------------------------------
    FLEXibler Java Entwickler

Ähnliche Themen

  1. Wie speichere ich Objektinhalte sinnvoll in einer Datei?
    Von BeaTBoxX im Forum .NET Datenverwaltung
    Antworten: 2
    Letzter Beitrag: 11.09.07, 08:45
  2. DataGrid zeigt nicht`s an
    Von Crash Override im Forum .NET Datenverwaltung
    Antworten: 1
    Letzter Beitrag: 23.11.05, 17:13
  3. Datagrid inhalt an anderes datagrid übergeben!
    Von c0si im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 01.03.05, 11:14
  4. Antworten: 5
    Letzter Beitrag: 04.04.04, 00:03
  5. zeigt id nicht an?
    Von jan im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 06.03.02, 23:07