如何更改 material table 反应中过滤的日期格式?
How to change the filtered date format in material table react?
在materialtable反应中,我有以下列:
columns={[
{
title: 'Name',
field: 'name',
type: 'string',
},
{
title: 'Age',
field: 'age',
type: 'string',
},
{
title: 'DOB',
field: 'birthDate',
type: 'date',
dateSetting: {
format: 'dd/MM/yyyy'
},
}
]}
当我尝试过滤日期列时,它显示过滤日期,例如 2 月 24 日,但我希望日期像 dd/MM/yyyy格式.
如何更改值。我已经尝试提供 dateSetting,但它不适用于过滤器。
谢谢。
您可以通过定义自己的 filterComponent
来实现。这是我基于此 solution:
制作的一个工作示例
首先,您需要创建要用作过滤器的组件,在我的例子中,我使用了 material-ui/pickers 中的 KeyboardDatePicker
,但是可以吗随心所欲:
const CustomDatePicker = (props) => {
const [date, setDate] = useState(null);
return (
<MuiPickersUtilsProvider utils={DateFnsUtils}>
<KeyboardDatePicker
margin="normal"
id="date-picker-dialog"
label="Date picker"
format="dd/MM/yyyy"
clearable
value={date}
onChange={(event) => {
console.log("Date picker value: ", event);
console.log(props.columnDef.tableData.id);
setDate(event);
props.onFilterChanged(props.columnDef.tableData.id, event);
}}
KeyboardButtonProps={{
"aria-label": "change date"
}}
/>
</MuiPickersUtilsProvider>
);
};
关键方面是调用通过 props
传递的 onFilterChanged
函数。
然后,在您的列定义上实现您的组件,如下所示:
const tableColumns = [
{ title: "Client", field: "id" },
{ title: "Name", field: "name" },
{
title: "Date",
field: "date",
type: "date",
dateSetting: { locale: "en-GB" },
filterComponent: (props) => <CustomDatePicker {...props} />
}
];
完整代码和沙盒 here。希望对你有用!
在materialtable反应中,我有以下列:
columns={[
{
title: 'Name',
field: 'name',
type: 'string',
},
{
title: 'Age',
field: 'age',
type: 'string',
},
{
title: 'DOB',
field: 'birthDate',
type: 'date',
dateSetting: {
format: 'dd/MM/yyyy'
},
}
]}
当我尝试过滤日期列时,它显示过滤日期,例如 2 月 24 日,但我希望日期像 dd/MM/yyyy格式.
如何更改值。我已经尝试提供 dateSetting,但它不适用于过滤器。 谢谢。
您可以通过定义自己的 filterComponent
来实现。这是我基于此 solution:
首先,您需要创建要用作过滤器的组件,在我的例子中,我使用了 material-ui/pickers 中的 KeyboardDatePicker
,但是可以吗随心所欲:
const CustomDatePicker = (props) => {
const [date, setDate] = useState(null);
return (
<MuiPickersUtilsProvider utils={DateFnsUtils}>
<KeyboardDatePicker
margin="normal"
id="date-picker-dialog"
label="Date picker"
format="dd/MM/yyyy"
clearable
value={date}
onChange={(event) => {
console.log("Date picker value: ", event);
console.log(props.columnDef.tableData.id);
setDate(event);
props.onFilterChanged(props.columnDef.tableData.id, event);
}}
KeyboardButtonProps={{
"aria-label": "change date"
}}
/>
</MuiPickersUtilsProvider>
);
};
关键方面是调用通过 props
传递的 onFilterChanged
函数。
然后,在您的列定义上实现您的组件,如下所示:
const tableColumns = [
{ title: "Client", field: "id" },
{ title: "Name", field: "name" },
{
title: "Date",
field: "date",
type: "date",
dateSetting: { locale: "en-GB" },
filterComponent: (props) => <CustomDatePicker {...props} />
}
];
完整代码和沙盒 here。希望对你有用!