如何在 ag-grid 中预设列过滤器 [英] how to pre-set column filter in ag-grid

查看:37
本文介绍了如何在 ag-grid 中预设列过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用 ag-gridIonic/Angular 应用程序.我希望某些网格在加载网格时自动应用过滤器 - 无需用户执行任何操作.

I have an Ionic/Angular app using ag-grid. I would like certain grids to have a filter automatically applied when the grid is loaded - without the user having to do anything.

我尝试了以下方法:

onGridReady(params) {
  params.api.sizeColumnsToFit();
  // get filter instance
  var filterComponent = params.api.getFilterInstance("isActive");
  // OR set filter model and update
  filterComponent.setModel({
    type: "greaterThan",
    filter: 0
  });
  filterComponent.onFilterChanged();
}

但它什么也没做.有什么想法吗?

but it did nothing. Any ideas?

推荐答案

AgGrid 在 24.0 版中包含一个 onFirstDataRendered 回调,如后面的评论中所述.下面的原始答案现在仅与此功能之前的版本相关.

AgGrid included a onFirstDataRendered callback in version 24.0, as stated in later comments. The original answer below is now only relevant for versions which pre-date this functionality.

onFirstDataRendered(params) {
    var filterComponent = params.api.getFilterInstance("isActive");

    filterComponent.setModel({
        type: "greaterThan",
        filter: 0
    });

    filterComponent.onFilterChanged();
}

在他们的几个 example 较旧的 plunk 中重现了您的问题,似乎通过添加一个小的延迟来缓解.只是冒险猜测 DOM 可能还没有完全准备好,尽管网格已经准备好了.

Reproduced your problem in a couple of their example older plunks, seemed to be alleviated by adding a small delay. Just venturing a guess that maybe the DOM isn't completely ready yet, although the grid is.

Pre-onFirstDataRendered 版本:

Pre-onFirstDataRendered versions:

onGridReady(params) {
params.api.sizeColumnsToFit();

setTimeout(() => {
    var filterComponent = params.api.getFilterInstance("isActive");
    filterComponent.setModel({
      type: "greaterThan",
      filter: 0
    });
    filterComponent.onFilterChanged();
    },150)
}

这篇关于如何在 ag-grid 中预设列过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆