跳到内容
+

数据表格 - 列菜单

自定义您的列菜单。

列菜单

每个列标题都带有一个列菜单,其中包含快速访问的数据表格功能,例如列可见性、排序、筛选等。

可以通过点击标题单元格悬停时出现的三点图标,或者在聚焦列标题并按下 Ctrl+Enter (或 macOS 上的 ⌘ Command+Enter) 来访问它。

Enter 开始编辑

自定义列菜单项

您可以通过将 slotsslotProps 属性传递给 <GridColumnMenu /> 组件来自定义列菜单项

  • slots - 使用此属性覆盖默认列菜单插槽或添加新插槽。
  • slotProps - 使用此属性覆盖或传递列菜单项的 displayOrder。您也可以使用它将额外的属性传递给自定义列菜单插槽。

添加菜单项

要添加新的菜单项,请创建一个新的项目插槽并将其传递给 slots 属性。在下面的示例中,新的插槽名为 columnMenuUserItem,但您可以选择任何名称,它将自动添加到菜单中。您还可以使用 slotProps 属性设置 displayOrder (默认 100) 或将新属性传递给插槽。

function CustomColumnMenu(props: GridColumnMenuProps) {
  return (
    <GridColumnMenu
      {...props}
      slots={{
        // Add new item
        columnMenuUserItem: CustomUserItem,
      }}
      slotProps={{
        columnMenuUserItem: {
          // set `displayOrder` for the new item
          displayOrder: 15,
          // Additional props
          myCustomValue: 'Do custom action',
          myCustomHandler: () => alert('Custom handler fired'),
        },
      }}
    />
  );
}
Enter 开始编辑

覆盖默认菜单项

使用 slots 属性覆盖默认菜单项。查看此表以了解每个菜单项的可覆盖插槽名称。

function CustomColumnMenu(props: GridColumnMenuProps) {
  return (
    <GridColumnMenu
      {...props}
      slots={{
        // Override `columnMenuFilterItem` component
        columnMenuFilterItem: CustomFilterItem,
      }}
    />
  );
}
Enter 开始编辑

隐藏菜单项

要隐藏菜单项,您可以将 slots 中的相应插槽设置为 null。查看此表以了解每个菜单项的插槽名称。

function CustomColumnMenu(props: GridColumnMenuProps) {
  return (
    <GridColumnMenu
      {...props}
      slots={{
        // Hide `columnMenuColumnsItem`
        columnMenuColumnsItem: null,
      }}
    />
  );
}
Enter 开始编辑

重新排序菜单项

每个项目都根据 displayOrder 分配一个值,该值决定了它在其他项目之前还是之后显示。它以升序排列;数字越小,它在列表中显示得越早。对于新项目,displayOrder 的默认值为 100

您可以在 slotProps 中覆盖默认或新项目的 displayOrder

查看此表以查看每个菜单项的默认 displayOrder

function CustomColumnMenu(props: GridColumnMenuProps) {
  return (
    <GridColumnMenu
      {...props}
      slotProps={{
        // Swap positions of filter and sort items
        columnMenuFilterItem: {
          displayOrder: 0, // Previously `10`
        },
        columnMenuSortItem: {
          displayOrder: 10, // Previously `0`
        },
      }}
    />
  );
}
Enter 开始编辑

默认列菜单项

作为参考,以下是列菜单 slots 以及默认项目组件和 displayOrder

自定义菜单组件

您还可以通过将完全自定义的组件传递到数据表格的 columnMenu 插槽来自定义和替换列菜单。如果您想将某些默认菜单项添加到您的自定义组件中,您可以导入并重新使用它们。

Enter 开始编辑

禁用列菜单

默认情况下,每个列标题都启用了列菜单。要禁用列菜单,请设置属性 disableColumnMenu={true}

Enter 开始编辑

带有 Pro/Premium 功能的列菜单

在以下演示中,除了数据表格 MIT 功能外,您还可以看到商业功能,例如分组聚合的实际应用。尝试调整各个列菜单项中的值。

Enter 开始编辑