2017-06-29 22 views
0

我看到AG-网网站上的这个注意工作:getRowHeight()不rowModelType =“无限”与最新的AG-电网版本

更改行高的内存行模式仅支持。使用虚拟分页,视口或企业行模型时,不能使用变量行高度。这是因为这些行模型需要计算未加载行的位置,因此需要假定行高是固定的。

但是,在以前的版本(7.x)中getRowHeight()得到了很好的支持,所以想知道必须有一些替代方法来实现它。

我在以前版本的ag-grid中使用rowModelType ='pagination'。但是,由于rowModelType ='pagination'被取消了,所以我用rowModelType ='infinite'取代了这个。 但有了这个,getRowHeight()没有像在那里网站中提到的那样工作。

是否有替代方法来实现这一点。 我的Grid选项:

var gridOptions = { 
floatingFilter:true, 
debug: true, 
enableServerSideSorting: true, 
enableServerSideFilter: true, 
enableColResize: true, 
rowSelection: 'single', 
rowDeselection: true, 
columnDefs: columnDefs, 
rowModelType: 'infinite', 
paginationPageSize: 10, 
cacheOverflowSize: 2, 
maxConcurrentDatasourceRequests: 2, 
infiniteInitialRowCount: 1, 
maxBlocksInCache: 2, 
//rowHeight: 5, 
getRowNodeId: function(item) { 
    return item.id; 
}, 
getRowHeight: function(params){ 
    return 300; 
} 

};

这里是我的Plunkr,我尝试使用getRowHeight()但它没有工作。 https://plnkr.co/edit/P6fnVz4ud1A68khuqDtx?p=preview

回答

1

运作的,你可以得到数据后做下面的代码:

setRowsHeight(){ 
    let gridHeight = 0; 

    this.gridOptions.api.forEachNode(node => { 
     let rowHeight = this.gridOptions.getRowHeight(node); 

     node.setRowHeight(rowHeight); 
     node.setRowTop(gridHeight); 

     gridHeight += rowHeight; 
    }); 
    if (!gridHeight) { 
     return; 
    } 

    let elements = this.el.nativeElement.getElementsByClassName('ag-body-container'); 
    if (elements) { 
     this.renderer.setElementStyle(elements[0], 'height', `${gridHeight}px`) 
    } 
} 

我希望它会帮助你 对我来说,解决这个我试过问题

+0

,虽然它似乎最初工作,它没有正常工作。在向下滚动时,行开始闪烁。我得到警告 [违规]'requestAnimationFrame'处理程序花费了xx ms – undefined

+0

行..感谢您的解决方案工作90%。我需要添加一个额外的gridOption属性以避免行闪烁。 gridOptions.rowBuffer = 1000(一个很大的值) – undefined

0

getRowHeight()在无限行模型中不受支持。 getRowHeight只与InMemoryRowModel