下面的代碼工作:滾動AdvancedDataGrid保持項鑑於
項目渲染:
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth, unscaledHeight);
if(editMode)
dispatchEvent(new Event("editLayoutChange"));
}
Datagrid的(對於 「editLayoutChange」 事件處理函數 - 「視口」 是在AdvancedDataGrid):
public function editLayoutChange(event : Event) : void {
var viewportTopLeft : Point = viewport.localToGlobal(new Point(0,0));
var viewportBottom : Number = viewportTopLeft.y + viewport.height;
var rendererTopLeft : Point = Container(event.target).localToGlobal(new Point(0,0));
var rendererBottom : Number = rendererTopLeft.y + Container(event.target).getLayoutBoundsHeight();
var offset : Number = rendererBottom - viewportBottom;
if(offset > 0) {
// Typical item height is 21px
var itemHeight : Number = 21;
matrix.verticalScrollPosition += Math.ceil(offset/itemHeight);
}
}
但我不確定重寫updateDisplayList是最乾淨的實現,因爲它發射了很多。我嘗試調度「editLayoutChange」事件以響應項目渲染器上的「調整大小」事件,但我看到的確很不穩定。有沒有更好的選擇派發此事件比updateDisplayList?
編輯 - 我正在偵聽updateDisplayList,因爲渲染器在進入編輯模式時將更改大小(增大),並且可以在編輯期間動態擴展。
的問題是,在目前「編輯模式」的轉變,渲染尚未調整,所以這是不可能進行佈局opertions還。此外,在編輯模式激活後,渲染器的大小可能會稍後更改。 – NTyler