跳到内容
返回博客

使用户在 Data Grid 行分组方面拥有更多自由

Alexandre Fauquette

@alexfauquette
+

在专注于改进我们的 Data Grid 组件的令人难以置信的一年之后,我们通过推出新的 Premium 计划的第一个功能向前迈进:行分组,在 v5.3.0 中发布。

让我们仔细看看这个功能。

如果您已经使用 Pro 计划,您可能熟悉 树形数据,它允许您的用户通过打开和关闭行的子项来在层次结构中导航。

但并非所有数据都具有自然的层次结构,您的用户可能需要修改顺序。

好消息!现在可以通过行分组实现这一点。

行分组实践

考虑一下 IMDb 评选的前 250 部电影的示例数据。您会按导演、票房结果还是发行年份对它们进行分组?

答案取决于用户想要做什么。因此,让他们自由选择!

借助新的行分组功能,您可以单击导演列菜单,然后选择按导演分组,以将所有具有相同导演的行分组。

当您准备好返回默认视图时,请在同一列菜单中单击停止按导演分组

如何解锁此功能 🔓🎁

行分组功能将在 Premium 计划启动时成为其中的一部分。目前,您可以通过启用实验性功能在 Pro 计划中访问它。

<DataGridPro experimentalFeatures={{ rowGrouping: true }} {...otherProps} />

注意:行分组在其当前形式下是稳定的。实验性标志是为了确保当该功能最终转移到 Premium 计划时,Pro 计划不会出现任何回归。

如何设置默认分组 ⚡️

通过定义初始分组来节省用户的时间。为此,请在 initialState prop 中指定行分组模型。

对于包含导演信息的页面,我们可以按导演和票房分组,如下所示

<DataGridPro
  experimentalFeatures={{ rowGrouping: true }}
  initialState={{
    rowGrouping: {
      model: ['Director', 'BoxOffice'],
    },
  }}
  {...otherProps}
/>

您仍然可以在列菜单中修改此分组配置。

但是,正如您在下面的示例中看到的,设置默认分组使我们能够专注于我们认为最有趣的数据,例如希区柯克电影的票房结果

remove groupable option

精选可分组列 🍒

在让您的用户享受这项新功能之前,让我们使其适应您的用例。

并非所有列都是理想的候选列。当信息在给定列中重复时,例如电影导演的姓名,行分组最有用。

在我们的前 250 部电影的示例中,按标题分组没有意义——每部电影都有不同的名称,因此不会有行组。

您可以通过在列定义中将属性 groupable 设置为 false 来删除对特定列进行分组的能力。

这将删除相应列菜单中的按...分组选项。

remove groupable option

自定义分组行为 🔧

某些列很有趣,但不适合分组。

例如,电影的发行日期是有趣的信息,但按确切日期分组会导致每部电影一个组(除了怪形银翼杀手,众所周知,它们都是在 1982 年 6 月 25 日发行的😅)。

按十年分组更有趣。

为此,列定义接受属性 groupingValueGetter

它的签名类似于 valueGetter,它返回与列关联的分组值。

要按十年对我们的电影进行分组,我们可以使用以下方法

groupingValueGetter: ({ value }) => `${Math.floor(value.getFullYear() / 10)}0's`;

分享您的反馈 🗣

我们希望您发现这个新功能有用。请随时打开 issues 以分享反馈、报告错误或提出增强功能。

有关行分组自定义的更多详细信息,请参阅文档

有关我们的 v5.3.0 版本的更多信息,请访问更新日志