Adobe Flash Builder中的数据绑定

时间:2012-12-06 21:01:37

标签: flash flex adobe builder

我的应用程序中包含2个对象:ListComboBox。在List我有一组项目。单击其中一个项目时,我希望ComboBox's项目发生更改。到目前为止我有这个代码,但我无法弄清楚从哪里开始。

protected function list_changeHandler(event:IndexChangeEvent):void
        {
            if(list.selectedItem.stores == "Dodge")
            {

                //comboBox.?????
            }
        }

我也有Cold Fusion的数据服务,也是在项目中设置的。我有一个商店列表,Dodge Toyota Hyundai Mazda Nissan Jacksonville填充List。当用户选择商店时,Names数据中有几百ComboBox个需要过滤。例如,如果我选择Dodge商店,我希望仅使用商店属性为Dodge的用户填充组合框。我怎么做?我希望这一切都有道理:)

2 个答案:

答案 0 :(得分:1)

我可以想到两种方法来应对这种情况。你采取的方向取决于你的用例(我知道的很少)。

Load'm all和filter'm

您可以列出可能出现在ComboBox中的所有可能项目的一个大列表。您确保这些项目具有parentId属性。然后,当用户从列表中选择项目时,您可以使用此属性过滤项目。

private var comboboxItems:ArrayCollection;

override public function initialize():void {
    super.initialize();

    myService.getAllComboboxItems(setComboboxItems);
}

private function setComboboxItems(event:ResultEvent):void {
    combobox.dataprovider = comboboxItems = event.result as ArrayCollection;
    comboboxItems.filterFunction = isParentSelected;
}

private function isParentSelected(item:ComboboxItem):Boolean {
    return item.parentId = list.selectedItem.id;
}

protected function list_changeHandler(event:IndexChangeEvent):void {
    if (list.selectedItem.stores == "Dodge") {
        comboboxItems.refresh(); 
    }
}

注意:这只是我写的最顶尖的代码,所以它可能无法开箱即用,但它传达了这个想法。

当你需要

时加载

每次在List中选择一个项目时,进行服务调用以获取相应的ComboBox项目,并使用传入结果设置dataProvider。

protected function list_changeHandler(event:IndexChangeEvent):void {
    if (list.selectedItem.stores == "Dodge") {
        service.getComboBoxItemsByParentId(list.selectedItem.id, setComboboxItems); 
    }
}

private function setComboboxItems(event:ResultEvent):void {
    combobox.dataprovider = event.result as ArrayCollection;
}

答案 1 :(得分:0)

尝试更改组合框的数据提供程序,如

protected function list_changeHandler(event:IndexChangeEvent):void
    {
        if(list.selectedItem.stores == "Dodge")
        {
            comboBox.dataProvider=array; 
            //or
            comboBox.dataProvider=xmlList;
        }
    }