我正在开发一个需要在我的dataGrid中使用组合框的项目。关于这个案例很难找到任何有价值的教程。 我创建了我的课程:
public class MyCellRender extends ComboBox implements ICellRenderer {
protected var _data:Object;
protected var _listData:ListData;
protected var _selected:Boolean;
private var _selectedItem:Object;
private var _firsTime:Boolean;
private var _tempArray:Object;
public static var _stage:Object;
public function MyCellRender():void {
super();
this.addEventListener(Event.CHANGE, onSelItem);
_firsTime = true;
}
.
.
.
public function set data(value:Object):void {
_data = value;
if(!_tempArray){
_tempArray = new Array();
for (var i:uint = 0; i < _data.combobox.groups.length; i++)
_tempArray.push( { label : _data.combobox.groups[i] } );
}
if (!_selected) {
var _dp:DataProvider = new DataProvider(_tempArray);
this.dataProvider = _dp;
}
if (_firsTime) {
_firsTime = false;
_selectedItem = _tempArray[_data.combobox.current];
}
var id:int = _tempArray.indexOf(_selectedItem);
_data.combobox.current = id;
this.selectedItem = _selectedItem;
_stage.dataGrid.dispatchEvent(new DataGridEvent(DataGridEvent.ITEM_EDIT_END));
}
private function onSelItem(e:Event):void
{
_selectedItem = (e.target as ComboBox).selectedItem;
}
我在这里实现了所有必要的方法和重建/添加的方法。
作为数据对象,我传递一个包含很少其他对象的对象和一个名为combobox的对象,它有两个参数:
public var _current:int;
public var _groups:Array;
这一切都很好,直到我在dataGrid,dataProvider中有太多项目,我需要向上/向下滚动。如果在可见dataGrid区域的底部有一个选定值为“ABC”的组合框,我的组合框可以随机渲染所选项目和可能的组,并向下滚动以便我可以看到更多项目,底部的项目(现在是完全不同的行)选择了值“ABC”。有谁知道如何解决这个问题?干杯