0

我正在使用 XMLListCollection 作为 spark ComboBox,受此链接的启发

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 回答