2012-10-19 21 views
0

林一個ArrayCollection還挺新的Flex環境,我想知道如何做到這一點的場景:鑄造result.event到人(類)的Flex中

我最初的代碼是這樣的:

public function displayAllNames(event:ResultEvent):void { 

    var result:ArrayCollection = new ArrayCollection(); 

    result = event.result as ArrayCollection; 

    if (result.length != 0){ 
     listBox.dataProvider = result; 
    } 
} 

event.result是Person類的ArrayCollection具有name屬性

列表框是List組件的Flex中的id其中名稱爲G oing to be displayed

當我試圖運行代碼時,列表框顯示了一些東西。但不是名稱,而是全部顯示對象對象。看起來我仍然必須首先使用event.result做一些事情,這樣它才能成爲Person類的ArrayCollection。

回答

0

您需要設置的labelField您的組合框的,試試這個

假設人有明顯的name屬性,

public class Person(){ 
    public var name:String = "User 1"; 
} 

你可以告訴你的列表框使用該財產,以填充其標籤字段使用labelField財產

if (result.length != 0){ 
    listBox.labelField = "name"; 
    listBox.dataProvider = result; 
} 

默認情況下,我認爲設置爲"label",如果未找到屬性,它會使用Object.toString()這就是[Object object]的來源。

由於此其也可以覆蓋,或者僅僅包括了toString方法在你的數據提供者類,而不是更改列表的labelField

overide pubic function toString():String{ 
    return "this will become your label field"; 
} 
+0

你是什麼意思listBox.labelField =「名」的意思; ?它有什麼作用? –

+0

它告訴列表框使用收集對象的名稱屬性作爲標籤提交 – francis

+0

謝謝。我試過了,但它仍然在做同樣的事情。它仍然在列表框上顯示[object Object]。 –