Проблема с датой фильтрации в MUI-DataGrid для одного конкретного фильтра

Сведения о версии: "@mui/x-data-grid": "^6.2.1"

У меня есть функция, которая создает столбцы для DataGrid, как показано ниже (только вставка соответствующего кода)

      if (prop === "date" || prop === "dateModified" || prop === "needByDate") {
      tableColumns.push({
        field: prop,
        headerName: _.startCase(prop),
        type: "date",
        flex: 1,
        minWidth: 120,
        align: "left",
        headerAlign: "left",
        valueFormatter: (params) => formatDateAndTime(params.value),
      });
    }

Функция передается в DataGrid, как показано ниже:

       <DataGrid
    rows={data}
    autoHeight={true}
    columns={CreateTableColumns({ data, detailsBool })}
    initialState={{
      pagination: { paginationModel: { pageSize: pageSize } },
    }}
    pageSizeOptions={[5, 10, 25, 50, 100]}
    onPageSizeChange={(newPageSize) => setPageSize(newPageSize)}
    onRowClick={handleRowClick ? (e) => handleRowClick(e) : null}
    components={{ Toolbar: GridToolbar }}
    getRowHeight={() => "auto"}
    disableRowSelectionOnClick
    onCellClick={onCellClick}
    checkboxSelection={checkBoxBool}
    onRowSelectionModelChange={(ids) => {
      onRowsSelectionHandler(ids);
    }}
    isRowSelectable={(params) =>
      isRowSelectable === "supplierList" &&
      !(params.row.supplierList.length >= params.row.noOfSamplesRequired)
    }
/>

код функции formateDateAndTime(value) добавлен ниже:

      export function formatDateAndTime(prop) {
  var date = new Date(prop);
  var months = [
    "Jan",
    "Feb",
    "Mar",
    "Apr",
    "May",
    "Jun",
    "Jul",
    "Aug",
    "Sep",
    "Oct",
    "Nov",
    "Dec",
  ];
  let year = date.getFullYear();
  let month = months[date.getMonth()];
  let dateVal = date.getDate();
  let minutes = date.getMinutes();
  let hours = date.getUTCHours() + 4;
  let hour = hours % 12 || 12;
  let formattedDate =
    dateVal +
    "-" +
    month +
    "-" +
    year +
    " " +
    hour +
    ":" +
    minutes +
    `${hours < 12 ? " AM GST" : " PM GST"}`;

  return formattedDate;
}

Теперь проблема, с которой я столкнулся, заключается в том, что фильтр даты в GridToolbar фильтрует все операторы, т.е. Дата есть, нет, находится после, включена или после, включена или раньше, пуста и не пуста. кроме одного оператора - есть перед.

Я пробовал использовать свойства valueGetter и renderCell вместо valueFormatter, они оба выдают ошибки еще до отображения содержимого. Я также пробовал удалить всю свою коллекцию документов и создать новые объекты, чтобы убедиться в отсутствии аномалий в данных.

0 ответов

Другие вопросы по тегам