Apache flex 滚动AdvancedDataGrid以查看项目

Apache flex 滚动AdvancedDataGrid以查看项目,apache-flex,actionscript,Apache Flex,Actionscript,以下代码正在运行: 项目渲染器: override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth, unscaledHeight); if(editMode) dispatchEvent(new Event("editLayoutChange")); } p

以下代码正在运行:

项目渲染器:

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
    super.updateDisplayList(unscaledWidth, unscaledHeight);
    if(editMode)
        dispatchEvent(new Event("editLayoutChange"));
}
private var _editModeEntered:Boolean = false;

private var _editMode:Boolean;
public function set editMode(value:Boolean):void {
    _editMode = true;
    _editModeEntered = true;
    invalidateProperties();
}
// probably want a getter for editMode too

override protected function commitProperties():void {
    super.commitProperties();
    if (_enteredEditMode) {
        dispatchEvent(new Event("editLayoutChange"));
        _enteredEditMode = false;
    }
}
Datagrid(“editLayoutChange”-“viewport”是AdvancedDataGrid的事件处理程序函数):

但我不确定覆盖updateDisplayList是否是最干净的实现,因为它触发了很多次。我尝试调度“editLayoutChange”事件以响应项目渲染器上的“resize”事件,但我发现了非常不稳定的行为。是否有比updateDisplayList更好的发送此事件的选择


编辑-我正在收听updateDisplayList,因为渲染器在进入编辑模式时会更改大小(增长),并且可以在编辑过程中动态扩展。

执行此类操作的常用方法是从
commitProperties发送-

在渲染器中:

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
    super.updateDisplayList(unscaledWidth, unscaledHeight);
    if(editMode)
        dispatchEvent(new Event("editLayoutChange"));
}
private var _editModeEntered:Boolean = false;

private var _editMode:Boolean;
public function set editMode(value:Boolean):void {
    _editMode = true;
    _editModeEntered = true;
    invalidateProperties();
}
// probably want a getter for editMode too

override protected function commitProperties():void {
    super.commitProperties();
    if (_enteredEditMode) {
        dispatchEvent(new Event("editLayoutChange"));
        _enteredEditMode = false;
    }
}

这确保仅当您明确更改了编辑模式时才会调度事件。

您可以使用高级数据网格公共API
滚动索引(索引)
滚动到行

问题是,在“编辑模式”更改时,渲染器尚未调整大小,所以现在还不可能执行布局操作。此外,渲染器的大小可能在激活编辑模式后的稍后时间更改。