0

このリンクに触発されたsparkComboBoxにXMLListCollectionを使用しています

http://blog.shortfusion.com/index.cfm/2009/4/15/FlexAS3-Custom-ComboBox-for-Countries-with-XML

XMLListCollectionはここで定義されます:

public class ComboBox_Country extends ComboBox {

    private var Country:XML=new XML(
        <countries>
         <country code="US" iso="840" label="United States" />
         <country code="CA" iso="124" label="Canada" />
         <country code="GB" iso="826" label="United Kingdom" />
                     ....
         <country code="ZM" iso="894" label="Zambia" />
         <country code="ZW" iso="716" label="Zimbabwe" />
        </countries>);

    public function ComboBox_Country() {
        dataProvider = new XMLListCollection(Country.children());
        labelField = '@label';
    }

mxmlでは次のように呼び出されます。

<mycomp:ComboBox_Country id="countryComboBox" width="100%"/>

ユーザーが選択すると、次の場所からインデックスを取得できますcountryComboBox.selectedIndex。しかし、国の文字列が必要であり、XMLListCollectionからそれを抽出する方法がわかりません。デバッガーを見ると、次のように表示されます。

ここに画像の説明を入力してください

ユーザーがインデックス2(英国など)を選択したとします。返すためにデバッガーに何を入力する必要がありますUnited Kingdomか?私は次のようなことを試しました:

countryComboBox.Country.getItemAt(2)
countryComboBox.Country.getItemAt(2).label
countryComboBox.Country[2]
countryComboBox.Country.label.getItemAt(2)
etc...

無駄に。

4

2 に答える 2

1

コンボ ボックスに正しくデータが入力されているかどうかは完全にはわかりません。通常はデータ プロバイダーを使用します ( http://help.adobe.com/en_US/flex/using/WS70f0d54f063b9b081aac8d1d1247252e4a0-8000.htmlを参照) 。

それがあなたのためにデータを正しく表示していると仮定すると、あなたはかなり近いです

// Should give you the country object selected
var obj:Object = countryComboBox.selectedItem;

// You should also be able to use .code or .iso
return obj.label;

obj.labelうまくいかない場合は、試すことができますobj['label'];

于 2012-05-26T23:05:13.377 に答える
1

ComboBox には、おそらく使用する必要があるプロパティ selectedItem があります。この場合、selectedItem は XML オブジェクトになります。XML オブジェクトからデータを取得する方法については、こちらを参照してください。あなたの場合、次を使用してラベルを取得できます

countryComboBox.selectedItem.@label
于 2012-05-26T23:07:08.900 に答える