1

我有一个应用程序,其中有 2 个对象: AList和 a ComboBox。在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。我怎么做?我希望这一切都有意义:)

4

2 回答 2

1

我可以想到两种方法来处理这种情况。您选择哪个方向,取决于您的用例(我对此知之甚少)。

全部加载并过滤

您将所有可能出现在 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(); 
    }
}

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

Load'm when you need'm

每次在 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;
}
于 2012-12-06T21:59:34.367 回答
0

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

protected function list_changeHandler(event:IndexChangeEvent):void
    {
        if(list.selectedItem.stores == "Dodge")
        {
            comboBox.dataProvider=array; 
            //or
            comboBox.dataProvider=xmlList;
        }
    }
于 2012-12-07T06:05:16.367 回答