我正在使用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...
无济于事。
答案 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