【问题标题】:Set AG filter before rows are rendered在呈现行之前设置 AG 过滤器
【发布时间】:2020-10-28 18:21:36
【问题描述】:

我使用AG Grid 来显示客户端数据。在渲染任何数据之前,我需要应用一些预设过滤器。我通过在gridReady 事件的gridApi 上调用setFilterModel 来做到这一点,但这为时已晚。那时数据已经呈现,所以在应用过滤器之前我会短暂显示所有数据,然后再次删除行。

onGridReady(params) {
    this.gridOptions.api.sizeColumnsToFit();
    params.api.setFilterModel(this.filterModel);
}

是否有我可以使用的事件,或访问网格 API 以在呈现任何数据之前设置过滤器模型的方法?

我创建了一个 Stackblitz 演示来显示该问题。该演示仅显示了短暂的闪烁,但使用自定义渲染器、更多列等刷新数据需要更长的时间。

https://stackblitz.com/edit/ag-grid-set-initial-filter-state-so-64426323?file=src/app/app.component.ts

谢谢,

【问题讨论】:

  • 请您提供一个stackblitz(或类似的)来证明这个问题?
  • 嗨 @Fletch 我添加了一个 Stackblitz。
  • onInit而不是gridReady中设置行数据有什么具体要求吗?
  • 仅用于在加载网格之前模拟大量数据。在实际应用中,它是父级生成行数据并使用@Input 将其传递给组件,但结果是相同的。

标签: angular ag-grid


【解决方案1】:

使用 onFirstDataRendered() 方法:

<ag-grid-angular
  (gridReady)="onGridReady($event)"
  (firstDataRendered)="onFirstDataRendered()">
</ag-grid-angular>

private gridApi;
private gridColumnApi;

onGridReady(params: AgGridEvent) {
    this.gridApi = params.api;
    this.gridColumnApi = params.columnApi;
}

onFirstDataRendered() {
    this.gridApi.setFilterModel(this.filterModel);
}

【讨论】:

  • 在 gridReady 事件之后触发 firstDataRendered 事件。这两个事件都是在数据呈现后发出的。
猜你喜欢
  • 1970-01-01
  • 2020-04-08
  • 2023-04-05
  • 1970-01-01
  • 2017-06-11
  • 2017-01-14
  • 1970-01-01
  • 2011-08-24
  • 2013-05-01
相关资源
最近更新 更多