【问题标题】:Use custom filter for objects in ag-grid对 ag-grid 中的对象使用自定义过滤器
【发布时间】:2020-04-19 02:42:12
【问题描述】:

我有一个 ag-grid 表,我将一些对象作为数据传递。我想添加一些自定义过滤器。下面是我的问题的一个非常简化的版本。

我有一个接口VersionInfo,它代表我传递给网格的对象。

export interface VersionInfo {
    version: number;
   // more fields here...
}

然后我指定网格的架构并添加一些数据:

columnDefs = [
    {
      headerName: 'Version', 
      field: 'version', 
      filter: 'agNumberColumnFilter',
      comparator: (a, b) => b.version - a.version,
      cellRenderer: (params: ICellRendererParams) => {
        return `Custom rendering ${params.data.version.version}`;
      }
    }
];

rowData = [
    { version: {version: 3} },
    { version: {version: 5} },
    { version: {version: 8} }
];

HTML 如下所示:

<ag-grid-angular 
    style="width: 500px; height: 200px;" 
    class="ag-theme-alpine"
    [rowData]="rowData" 
    [columnDefs]="columnDefs">
</ag-grid-angular>

除了comparator,一切都运行良好。我会假设它会以相反的顺序对表格进行排序,但没有发生任何事情,我只是得到rowData 中指定的表格,并且一旦将某些内容写入过滤器字段,所有条目都会被过滤。如前所述,这是一个简化版本,但问题是一样的。

【问题讨论】:

  • 那么过滤是否正常工作,只是排序不工作?您是否希望网格开始按版本列排序,在这种情况下您想使用sort 选项?
  • @MattNienow 在示例中,过滤和排序都不起作用。我的问题是如何为复杂对象添加这些功能。默认情况下,数字和字符串等原始数据类型似乎工作得很好。如果我尝试在比较器函数中添加console.log,它永远不会被触发。
  • 我现在明白了。使用@LuDeveloper 下面提到的valueGetter 将帮助您进行排序。然后我认为您还需要将其提供给过滤器参数:stackoverflow.com/questions/43893083/…

标签: angular ag-grid ag-grid-angular


【解决方案1】:

您的代码一切正常,但缺少只有小细节,如下:

在您的构造中,将网格 sortable 设置为 DefaultColDef 对象,如下所示:

this.defaultColDef = {
  sortable: true,
};

编辑: 在列定义中添加此部分:

...
headerName: 'version',
valueGetter: (params: any) => {
  return 'Custom rendering ' + params.data.version.version;
},
...

这里是 solution Plnkr link 基于您的代码:

希望它能解决您的问题。如果没有,请告诉我。

【讨论】:

  • 对我来说,结果似乎与没有它的结果相同。我已经检查了控制台中的列定义,sortable 无论如何都是true
  • 那您可以点击上面的 Plnkr 链接并将您的代码粘贴到那里,保存并与我分享吗?我相信这没什么大不了的。
  • 你贴的代码基本就是这样。我想要实现的行为是当您过滤 3 的版本列时,表中应该有一个带有 Custom rendering 3 的条目
  • plnkr.co/edit/OgB1E6PRFwj06Scu 检查是否一切正确。我将 valueRenderer 替换为 valueGetter。
  • 它正在使用 valueGetter,谢谢。你能在你的答案中改变它吗,我会接受它
猜你喜欢
  • 2019-03-21
  • 2018-11-30
  • 2017-10-17
  • 2019-06-28
  • 2016-09-20
  • 2021-02-13
  • 1970-01-01
  • 2016-12-11
  • 2011-08-12
相关资源
最近更新 更多