1

ListAと aの 2 つのオブジェクトを含むアプリケーションがありますComboBox。で、Listセットのアイテムを持っています。アイテムの1つがクリックされると、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

この状況にアプローチするには、2 つの方法が考えられます。どちらの方向に進むかは、ユースケースによって異なります (私はほとんど知りません)。

すべてロードしてフィルタリング

ComboBox に表示される可能性のあるすべてのアイテムの 1 つの大きなリストを作成します。これらのアイテムに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;
}
于 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 に答える