AS3:如何使用ActionScript 3访问XML List Collection中的数据?

时间:2012-05-26 22:26:03

标签: actionscript-3 flex actionscript flex4

我正在使用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中提取它。当我查看调试器时,我看到:

enter image description here

假设用户选择了索引2(例如英国)。我需要输入调试器以返回United Kingdom?我尝试过这样的事情:

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

无济于事。

2 个答案:

答案 0 :(得分: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'];

答案 1 :(得分:1)

ComboBox有一个您可能应该使用的selectedItem属性。在这种情况下,selectedItem将是XML对象。了解如何从XML对象here获取数据。 在您的情况下,您可以使用

获取标签
countryComboBox.selectedItem.@label