2010-02-11 37 views
0

我试图设置一个组合框的数据提供者。 我有2个组合框:cb_div和cb_stores。 对于cb_div,我可以使用XML文件正确设置数据提供者。 Cb_stores的数据提供者将根据选定的cb_div项目进行设置。Flex,<mx:Combobox>&XML:获取xml节点以指定数据提供者

首先,这里是我的XML文件。 为cb_div数据提供:

<?xml version="1.0" encoding="UTF-8"?> 
<divisions> 
<division id="Japan">Japan</division> 
<division id="Europe">Europe</division> 
</divisions> 

为cb_stores数据提供:

<list> 
<stores name="Europe"> 
    <store>BOUTIQUE HARROD'S</store> 
    <store>GALERIES LAFAYETTE LILLE</store> 
    <store>GALERIES LAFAYETTE SAISONNIERE</store> 
</stores> 
<stores name="Japan"> 
    <store>ODEIS PACK HANZOMON</store> 
    <store>GINZA</store> 
    <store>OMOTESANDO</store> 
</stores> 
</list> 

我试图做的是:如果用户在cb_div选择 “日本”,cb_stores的dataProvider应该是<stores name="Japan">下的商店,如果他选择“欧洲”,数据提供者应该是<stores name="Europe">

这是我所做的,它不工作:它返回每个商店。

<mx:Script> 
<![CDATA[ 
    import mx.controls.Alert; 
    private function division_change():void 
    { 
    Alert.show(division.selectedItem.toString()); 
    var temp:XMLList = stores.stores.(@name=division.selectedItem); 
    store.dataProvider = temp.store; 
    } 
]]> 
</mx:Script> 
<mx:VBox verticalGap="10"> 
<mx:ComboBox id="division" dataProvider="{divisions.division}" change="division_change()" prompt=" "/> 
<mx:ComboBox id="store" prompt=" "/> 
<mx:TextInput id="password" displayAsPassword="true"/> 
</mx:VBox> 

感谢您提供任何帮助。

问候

回答

1

马上蝙蝠

var temp:XMLList = stores.stores.(@name=division.selectedItem); 

需求是

var temp:XMLList = stores.stores.(@name==division.selectedItem); 

通知 “==”

改变这一点,看看还有什么错误。

+0

太棒了! 不够细心> _ < 非常感谢=) – 2010-02-16 15:40:29

+0

始终有助于让全新的眼睛审视您的代码。很高兴有帮助。 – invertedSpear 2010-02-16 15:43:18