【问题标题】:aggrid : how to group by year over a date field?ag grid:如何在日期字段上按年份分组?
【发布时间】:2018-12-14 19:27:30
【问题描述】:

我想按年份对行进行分组。 我没有包含 int Year 的列,但我得到了 Date 类型的列。

在我的列定义中,我添加了 rowGroup:true 来激活分组。

现在我如何告诉 agggrid 我想对我的日期的 year 属性进行分组?

是基于valueFormatter吗?

function (data) { 
  if (data.value == undefined) return ""; 
  var val = (new Date(data.value)).getFullYear(); 
  return val;
}

是基于比较器函数吗?

comparator: function (date1, date2) {
 if (date1 == undefined) return -1;
 if (date2 == undefined) return 1;
 var year1 = date1.getFullYear();
 var year2 = date2.getFullYear();
 if (year1 == year2)  return 0;
 return (year1 < year2) ?-1:1;
}

我在比较器中有一个断点。看起来它永远不会被调用。

它在 cellFormatter 中吗?细胞渲染器?

现在我得到了组行为(用于展开/折叠行组的复选框)。但是我有 n 个名为“2018”的组,每个日期一个。

额外问题:如何将此列显示为一个组而不显示为普通列?我想仅按年份分组并显示带有完整日期 dd/mm/yyyy 的“第二”列。

【问题讨论】:

  • 对不起,但我没有得到你想要达到的目标,请提供你的代码示例并更清楚地定义问题。顺便说一句,关于日期过滤器比较,您可以查看文档的this part
  • 对不起,我认为它很清楚。我想要行分组。我得到了完整日期(日/月/年)的行。我想对所有具有相同年份的行进行分组。我希望网格添加名为 2016,2017,2018... 的“虚拟”行并隐藏实际行。单击 2018 应显示 2018 的实际行。第二次单击将隐藏 2018 的行。折叠/展开/折叠/展开...

标签: grouping ag-grid


【解决方案1】:

您可以做的是创建一个基于日期字段的附加列,该列被分组但隐藏为一列。使用 valueGetter 显示年份:

function yearGetterFunction(params) {
  if (params.data.yourDateField== undefined) return ""; 
    var val = (new Date(params.data.yourDateField)).getFullYear(); 
    return val;
}

coldefs:[
    // your other columns, 
    {headerName: "Year", field: "yourDateField" valueGetter: yearGetterFunction, rowGroup:true, hide:true}
]

【讨论】:

  • 是的,我就是这么想的。但它绝对看起来像一个黑客。我一直在寻找更原生的解决方案。
  • @frenchone,本机解决方案是:使用真实存在的字段进行分组。您应该有确切的字段以获得按此字段分组的可能性。
猜你喜欢
  • 1970-01-01
  • 2020-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-13
相关资源
最近更新 更多