datagrid cellrenderer中的组合框

时间:2010-08-10 11:22:18

标签: actionscript-3 datagrid combobox flash-cs5

在没有运气的情况下搜索looooong并努力工作:

我需要在数据网格的列中放置一个组合框。用户只需从现有的combox项中选择一个值。 我知道我需要使用自定义的cellrenderer。请参阅下面我目前的尝试 此尝试成功将组合框插入数据网格 BUT ,而组合框中没有任何数据。事实上,当我点击数据网格中的组合框时,它与没有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 个答案:

答案 0 :(得分:1)

我认为这里的问题是你的ComboBoxCell类不仅 一个ComboBox(通过extends ComboBox语句)而且 已经 一个ComboBox(通过_mycombo类变量)。您正在向ComboBoxCell的内部ComboBox(_mycombo)添加列表项,但DataGrid正在显示ComboBoxCell,它没有任何要显示的项目。

我认为您需要做的就是删除内部ComboBox变量(_mycombo)并将构造函数中的addItem语句从_mycombo.addItem(...)更改为addItem(...)