2011-01-06 6 views
0

Ich habe eine SQL-Anweisung, die ich die Namensfelder aus einer SQL-Datenbank lesen möchte. Der Code:flex: Bohren in Datenprovider-Arrays

public function getAllGiberish():void { 
    var stmt:SQLStatement = new SQLStatement(); 
    stmt.sqlConnection = sqlConnection; 
    stmt.text = "SELECT name FROM test3"; 
    stmt.execute(); 
    l.dataProvider = new ArrayCollection(stmt.getResult().data); 
} 

Dies wird die Daten aus der db ziehen. Im Listenelement wird jedoch alles als [Objekt Objekt] angezeigt. Beim Debuggen kann ich sehen, dass der Datenanbieter zeigt:

data[0] > name 
data[1] > name 
data[2] > name 

Wo die Informationen, die ich ist der Name Objekt in jedem Datum möge.

Wie kann ich einfach darauf zugreifen? Es ist ein Problem, dem ich immer wieder begegne und das ich gerne ein für allemal ausarbeiten würde!

Prost

Antwort

1

Sie wollen die Eigenschaft label auf der Liste setzen (Flex Unter der Annahme, 3 hier). Standardmäßig sucht es nach einem Feld namens "label", nicht nach "name". Sehen Sie sich auch die Eigenschaften dataField und labelFunction des Listenobjekts für einige erweiterte Optionen an.

0

Das Ergebnis der Abfrage gibt ein Array von Objektinstanzen zurück, während Sie möglicherweise String erwarten, deren Schlüssel den von Ihnen ausgewählten Spaltennamen entsprechen. Sie müssen entweder die Spalte "name" in Ihrer Abfrage mit "label" versehen (da das List-Steuerelement dies als das standardmäßige labelField verwendet, wie es bei Chris der Fall ist), oder Sie müssen labelField oder eine labelFunction für das List-Steuerelement festlegen.

Beachten Sie, dass Sie typisierte Objekte anstelle von einfachen Objektinstanzen auch zurückgeben können, indem Sie die itemClass-Eigenschaft für die Anweisung festlegen.

0

Sie könnten eine Label-Funktion schreiben:

private function list_labelFunction(item:Object):String { 
      return item.columnName; 
     } 

Und stellen Sie sicher, dass Ihre Liste ein Label Funktion gesetzt hat:

<s:List id="myList" labelFunction="list_labelFunction"/> 

Das ist, wie ich es trotzdem geschafft!