PDA

Просмотр полной версии : динамический ComboBox проблема с отображением текста labelFunction


kiraml
10.02.2010, 13:26
Здравствуйте, такая проблема, существует два созданных динамических comboBox-а
один зависит от другого. Вот такой код.

public class Categories extends ComboBox{
public function Categories():void{
super();
addEventListener(Event.CHANGE, nextSubCategories);
}

public function nextSubCategories(e:Event):void{
dispatchEvent(new PictureEvents(PictureEvents.SELECT_CATEGORY, selectedItem.id));
}

public function setDataProvider(value:Array):void{
dataProvider = value;
this.labelFunction = comboBox_labelFunc;
}

private function comboBox_labelFunc(item:Object):String {
return (item.name);
}



}



public class SubCategories extends ComboBox{

public function SubCategories():void{
super();
this.labelFunction = comboBox_labelFunc;
}
public function updateCategories(_value:Array):void {
dataProvider = _value;
dispatchEvent(new PictureEvents(PictureEvents.SELECT_SUBCATEGORY, selectedItem.id));
}

private function comboBox_labelFunc(item:Object):String {
return (item.name);
}
}


создание и вызов функций:

public function setCategories():void{
var categories:Categories = new Categories();
....
categories.addEventListener(PictureEvents.SELECT_CATEGORY, changeCategory);
var subCategories:SubCategories = new SubCategories();
}
private function changeCategory(e:PictureEvent):void{
subCategories.updateCategories(_images[categories.selectedIndex].subCategory);
}



Проблема в следующем, когда я выбрал один элемент в ComboBox "Categories" во втором combobox отображаемые элементы должны изменится на новые, но этого не происходит, изменяется первый отображаемый элемент списка на нужный, а остальные остаются теми же что и были прежде, но когда я нажимаю допустим на пятый элемент второго combobox(SubCategories) его текст становится нужным, и распознает его как нужный обьект. Проблема лишь в отображении правильного текста во втором комбобоксе. Подскажите как это исправить .

kiraml
16.02.2010, 02:20
исправил..)

private function changeCategory(e:PictureEvents):void {
subCategoryes.removeEventListener(PictureEvents.ANIMATION_MENU_COMPLETE, pipeth);
subCategoryes.removeEventListener(PictureEvents.SELECT_SUBCATEGORY, loadImage);
removeChild(subCategoryes);
subCategoryes = null;

subCategoryes = new SubCategories(this, 28 + 228 + 10, 129, 228, 34);
subCategoryes.setCategories(_images[categoryes.selectedIndex].subCategory);
subCategoryes.selectedIndex = 0;
addChild(subCategoryes);
loadImage(new PictureEvents(e.type));
subCategoryes.addEventListener(PictureEvents.ANIMATION_MENU_COMPLETE, pipeth);
subCategoryes.addEventListener(PictureEvents.SELECT_SUBCATEGORY, loadImage);
}
других вариантов ненайдено :(((