0

私は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は name 属性を持つ Person クラスの ArrayCollection です

listBoxは、名前が表示される Flex のリスト コンポーネントの ID です。

コードを実行しようとすると、リストボックスに何かが表示されました。ただし、名前の代わりに、オブジェクト Objectがずっと表示されていました。Person クラスの ArrayCollection になるように、最初にevent.resultで何かをする必要があるようです。

4

1 に答える 1

0

ComboBoxのlabelFieldを設定する必要があります。これを試してください

Personに表示可能な名前プロパティがあると仮定すると、

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

labelFieldプロパティを使用して、そのプロパティを使用してラベルフィールドにデータを入力するようにListBoxに指示できます。

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";
}
于 2012-10-19T02:01:18.343 に答える