0

在没有运气的情况下搜索了 looooong 和努力:

我需要在数据网格的列中放置一个组合框。用户只需要从现有的组合框项目中选择一个值。我知道我需要使用自定义单元渲染器。请在下面查看我当前的尝试。
此尝试成功地将组合框插入到数据网格中,组合框中没有任何数据。事实上,当我点击datagrid中的combobox时,它和舞台上没有dataProvider的普通combobox是一样的。换句话说,它甚至没有打开。

因此,我需要知道如何修改我的 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;
    }
} 

}

4

1 回答 1

1

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

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

于 2010-12-08T17:23:23.907 回答