0

我有一个 MUI 表实现,使得选项对象 viewColumns 设置为 true,这应该显示弹出器以选择要在复选框的垂直列表中显示的列,如下所示:

在此处输入图像描述

,但我是水平获取它,如下面的屏幕截图所示:

在此处输入图像描述

MUIDataTable 组件中要传递的选项定义为:

const options = {
      filter: true,
      filterType: "dropdown",
      print: false,
      viewColumns: true,
      selectableRows: false,
      onRowClick: (rowData) => {
        console.log("RowClicked->", rowData);
      },
      responsive: "stacked",
      fixedHeaderOptions: {
        xAxis: false,
        yAxis: true,
      },
    };

列定义为:

export const DEAL_GRID_COLUMNS = [
  {
    name: "someReference",
    label: "Some Reference",
    options: {
      filter: true,
      sort: true,
    },
  },
  {
    name: "businessTeam",
    label: "Business Teams",
    options: {
      filter: true,
      sort: true,
    },
  },
  {
    name: "keyContact",
    label: "Key Contact Lead",
    options: {
      filter: true,
      sort: true,
    },
  },
.....
.....
.....
.....
];

并且该组件被消耗为

<MUIDataTable data={gridData} columns={DEAL_GRID_COLUMNS} options={options} />

gridData是从 Api 响应中收到的

4

2 回答 2

1

我使用您的示例制作了示例options,我发现viewColumnspopper 是垂直的。我假设存在 mui-datatable 版本问题。仅供参考,我正在使用"mui-datatables": "^2.14.0"

这是示例:

import React, {useEffect, useState} from "react";
import MUIDataTable from "mui-datatables";
import axios from 'axios';

export default function DataTable() {
    const [posts, setPost] = useState([]);
    let signal = axios.CancelToken.source();

    useEffect(() => {
        let isSubscribed = true;
        axios.get(`https://jsonplaceholder.typicode.com/posts`, {
            cancelToken: signal.token,
        })
            .then(res => {
                const posts = res.data;
                setPost(posts);
            }).catch(err => {
            console.log(err);
        });
        return function cleanup() {
            isSubscribed = false;
            signal.cancel('Api is being canceled');
        }
    }, []);

    const columns = ["id", "title", "body"];

    const options = {
        filter: true,
        filterType: "dropdown",
        print: false,
        viewColumns: true,
        selectableRows: 'none',
        onRowClick: (rowData) => {
            console.log("RowClicked->", rowData);
        },
        responsive: "stacked",
        fixedHeaderOptions: {
            xAxis: false,
            yAxis: true,
        },
    };

    return (
        <MUIDataTable
            title={"Posts"}
            data={posts}
            columns={columns}
            options={options}
        />
    );
}

您可以检查此输出屏幕

在此处输入图像描述

于 2020-05-27T18:24:24.043 回答
0

我通过覆盖它的 maxWidth 来解决这个问题

MuiPopover: {
    paper: {
      maxWidth: "16%",
    },
  }
于 2020-05-28T13:37:19.807 回答