FooterAdvancedDataGrid源码地址
http://www.forestandthetrees.com/openSource/dgFooters/srcview/
核心代码:
overlayFixed = new Sprite();addChild(overlayFixed);
将在overlayFixed上画出 horizontalGridLines、lockedColumns
overlayScrollable = new Sprite(); addChild(overlayScrollable);
将在overlayScrollable上画出ScrollableColumns,i = dataGrid.horizontalScrollPosition + lockedColumns;开始画,dataGrid.horizontalScrollPosition即现在的dataGrid的ScrollPosition,在出现scrollbar时实际上是创建了一个mask
private function _drawColumn (col:DataGridColumn, drawSprite : Sprite, i : int, xx : Number, yy : Number, h : Number) : void{
if (col is FooterDataGridColumn) {
var fdgc:FooterDataGridColumn = col as FooterDataGridColumn;
fdgc.footerColumn.owner = fdgc.owner;
var renderer:IListItemRenderer = (fdgc.footerColumn.itemRenderer)fdgc.footerColumn.itemRenderer.newInstance() :
dataGrid.itemRenderer.newInstance();
renderer.styleName = fdgc.footerColumn;
if (renderer is IDropInListItemRenderer) {
IDropInListItemRenderer(renderer).listData = new DataGridListData(
(fdgc.footerColumn.labelFunction != null) ?fdgc.footerColumn.labelFunction(col): fdgc.footerColumn.headerText,
fdgc.dataField, i - 1, null, dataGrid, -1);
}
renderer.data = fdgc;
addChild(DisplayObject(renderer));
renderer.x = xx;
renderer.y = yy;
renderer.setActualSize(col.width - 1, dataGrid.rowHeight);
if (dataGrid.getStyle("verticalGridLines")){
drawSprite.graphics.moveTo(xx + col.width, yy);
drawSprite.graphics.lineTo(xx + col.width, h);
}
}
}