首页 > 解决方案 > AG-Grid:如何使用具有无限行模型的自定义过滤器

问题描述

我正在使用 AG Grid Angular 并希望将自定义过滤器无限行模型结合使用。

自定义过滤器的文档没有提到无限行模型,所以不清楚两者是否兼容。我已经实现了文档中的“简单过滤器”示例并将其附加到我的网格中,这是我观察到的:

在我看来,这几乎可以工作,除了自定义过滤器需要:

有没有合适的方法来做到这一点,我错过了?

标签: ag-gridag-grid-angular

解决方案


如果您使用的是无限行模型,则网格希望您自己处理数据过滤并在getRows回调中返回过滤后的行,如此处所述:https ://www.ag-grid.com/angular-grid/无限滚动/#sorting--过滤

请参阅以下示例,该示例向您展示如何使用自定义过滤器组件来过滤年龄列上的行:https ://plnkr.co/edit/riKeOvcWdUwWioVs

在回调内部getModel,您只需返回一个值/对象,该值/对象将由网格传递,如下所示:request.filterModelgetRows

  getModel(): any {
    if (this.filterValue === 'all') {
      return null;
    } else {
      return {
        filter: this.filterValue,
        type: 'equals',
      };
    }
  }

然后在里面getRows我写了一些基本的功能来过滤数据:

          getRows: function (params) {
            console.log(
              'asking for ' + params.startRow + ' to ' + params.endRow
            );
            setTimeout(function () {
              var dataAfterFiltering = filterData(data, params.filterModel);
              var rowsThisPage = dataAfterFiltering.slice(
                params.startRow,
                params.endRow
              );
              var lastRow = -1;
              if (dataAfterFiltering.length <= params.endRow) {
                lastRow = dataAfterFiltering.length;
              }
              params.successCallback(rowsThisPage, lastRow);
            }, 500);
          },

推荐阅读