2011-01-06 111 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); 
} 

這將從數據庫中提取數據。但是,在列表項中,它將所有內容顯示爲[對象對象]。在調試我可以看到數據提供者顯示:

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

在哪裏,我要的信息是每一個數據對象中的名稱。

我該如何輕鬆訪問?這是我不斷遇到的問題,並希望一勞永逸地解決它!

乾杯

回答

1

你要設置的列表(假設Flex 3的位置)的labelField屬性。默認情況下,它正在尋找名爲「label」而不是「name」的字段。還要查看列表對象的dataField和labelFunction屬性以獲取更多高級選項。

0

查詢結果返回Object實例的數組,但您可能期望String,其鍵的鍵等於您選擇的列名稱。您需要在查詢中將「名稱」列別名爲「標籤」(因爲List控件使用此名稱作爲Chris提到的默認labelField),或者您需要在List控件上設置labelField或labelFunction。

請注意,您還可以通過在語句中設置itemClass屬性來返回類型化對象而不是普通對象實例。

0

你可以寫一個標籤功能:

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

,並確保您的任務列表標籤功能設置:

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

這就是我是如何做到的呢!