getRowHeight()不使用最新的ag-grid版本的rowModelType ='infinite'

时间:2017-06-29 08:49:39

标签: javascript angularjs ag-grid

我在ag-grid网站上看到了这个注释:

  

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

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

我在以前版本的ag-grid中使用了rowModelType ='pagination'。但是由于对rowModelType ='pagination'进行了降级,我将其替换为rowModelType ='infinite'。 但有了这个,getRowHeight()就不像那里的网站那样工作了。

是否有另一种方法可以实现这一目标。 我的网格选项:

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

2 个答案:

答案 0 :(得分:4)

无限行模型不支持

getRowHeight() getRowHeight 仅适用于 InMemoryRowModel

答案 1 :(得分:2)

获取数据后,您可以执行以下代码:

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`)
    }
}

我希望它会对你有所帮助 对我来说它解决了这个问题