2011-01-06 4 views
0

SQLデータベースから名前フィールドを読み取るSQL文があります。コード:flex:データプロバイダ配列をドリルダウン

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); 
} 

これは、データベースからデータを引き出します。しかし、リスト項目では、すべてを[object Object]として表示します。デバッグ時には私はデータプロバイダが表示されていることがわかります。

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

私が欲しい情報は、各データオブジェクト内の名前です。

これは簡単にアクセスできますか?それは私が遭遇し続けている問題であり、それを一度ですべて解決しようとしています!

乾杯

答えて

1

あなたが(ここでのFlex 3を仮定)リストのlabelFieldプロパティを設定します。デフォルトでは、 "name"ではなく "label"というフィールドが検索されます。さらに高度なオプションについては、リストオブジェクトのdataFieldプロパティとlabelFunctionプロパティを参照してください。あなたが選択した列名に等しいそのキーを使用して、文字列を期待するかもしれないが

0

クエリの結果は、オブジェクトインスタンスの配列を返します。 「name」列を「label」にエイリアスする必要があります(ListコントロールはこれをデフォルトのlabelFieldとして使用します)。あるいは、ListコントロールでlabelFieldまたはlabelFunctionを設定する必要があります。あなたも文でitemClassプロパティを設定することにより、型指定されたオブジェクトの代わりに、プレーンなオブジェクトのインスタンスを返すことができ

注意。

0

あなたはラベル関数書くことができます:

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

をそして、あなたのリストは、ラベル機能を設定していることを確認してください:

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

私はとにかくそれをやった方法です!

関連する問題