AS3 Combobox里面有一个dataGrid - 滚动垂直

时间:2012-04-17 21:14:40

标签: actionscript-3 datagrid combobox scroll cellrenderer

我正在开发一个需要在我的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”。有谁知道如何解决这个问题?干杯

0 个答案:

没有答案