выпадающий список в ячейке данных - PullRequest
0 голосов
/ 10 августа 2010

безуспешно искал в поисках и безуспешно:

Мне нужно поместить комбинированный список в столбец таблицы данных.Пользователю просто нужно выбрать значение из существующих элементов комбинированного списка.Я знаю, что мне нужно использовать пользовательский cellrenderer.Смотрите мою текущую попытку ниже.
Эта попытка успешно вставляет комбинированный список в сетку данных, НО без каких-либо данных в комбинированном окне.Фактически, когда я нажимаю на комбинированный список в сетке данных, он совпадает с обычным комбинированным списком на сцене без dataProvider.Другими словами, он даже не открывается.

Таким образом, мне нужно знать, как изменить мой cellrenderer для правильного добавления данных в комбо и принимать изменения, сделанные пользователем, когдавыбор значения из выпадающего списка.

Любая помощь будет принята с благодарностью!Обратите внимание, что я использую AS3 , а не AS2 и не Flex.

пакет {

import fl.controls.ComboBox; 
import fl.controls.listClasses.ICellRenderer; 
import fl.controls.listClasses.ListData; 
import flash.events.Event;
import fl.data.DataProvider;

public class ComboBoxCell extends ComboBox implements ICellRenderer { 
    private var _listData:ListData; 
    private var _data:Object; 
    private var _selected:Boolean;
    private var _mycombo:ComboBox = new ComboBox();

    public function ComboBoxCell() { 

        _mycombo.addItem( { label:"MasterCard", data:0 } );
        _mycombo.addItem( { label:"Visa", data:1 } );
        _mycombo.addItem( { label:"American Express", data:2 } );
        trace("drawn");
    } 

    public function set data(d:Object):void { 
        _data = d; 
    } 

    public function get data():Object { 

        return _data; 
    } 

    public function set listData(ld:ListData):void { 
        _listData = ld; 
    } 

    public function get listData():ListData { 
        return _listData; 
    } 

    public function setMouseState(state:String):void{
    }

    public function get selected():Boolean{
        return _selected;
    }

    public function set selected(value:Boolean):void{
        _selected = value;
    }
} 

}

1 Ответ

1 голос
/ 08 декабря 2010

Я думаю, что проблема в том, что ваш класс ComboBoxCell не только является ComboBox (через оператор extends ComboBox), но также имеет a ComboBox (через переменную класса _mycombo). Вы добавляете элементы списка во внутренний ComboBox ComboBoxCell (_mycombo), но DataGrid отображает ComboBoxCell, который не имеет элементов для отображения.

Я думаю, все, что вам нужно сделать, это удалить внутреннюю переменную ComboBox (_mycombo) и изменить операторы addItem в конструкторе с _mycombo.addItem(...) на просто addItem(...).

...