【问题标题】:getRowHeight() not working with rowModelType = 'infinite' with latest ag-grid versiongetRowHeight() 不适用于具有最新 ag-grid 版本的 rowModelType = 'infinite'
【发布时间】:2017-12-02 21:01:39
【问题描述】:

我在 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

【问题讨论】:

    标签: javascript angularjs ag-grid


    【解决方案1】:

    getRowHeight() 在无限行模型中不受支持。 getRowHeight 仅适用于 InMemoryRowModel

    【讨论】:

      【解决方案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`)
          }
      }
      

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

      【讨论】:

      • 我试过这个,虽然它最初似乎工作,但它不能正常工作。向下滚动时,行开始闪烁。我收到警告 [Violation] 'requestAnimationFrame' 处理程序花了 xx ms
      • OK..谢谢你的解决方案工作了 90%。我需要添加一个额外的 gridOption 属性以避免行闪烁。 gridOptions.rowBuffer = 1000(大值)
      猜你喜欢
      • 1970-01-01
      • 2021-01-25
      • 2017-12-01
      • 2021-11-05
      • 2021-07-06
      • 2020-06-03
      • 1970-01-01
      • 2020-11-19
      • 2019-04-12
      相关资源
      最近更新 更多