我有一个显示一些数据的材料UI表。我希望能够根据平均值从最低到最高对表格进行排序。默认情况下有办法吗?就像在浏览器中加载表格时一样。那是我的桌子和一些数据。我希望显示的平均列从最低到最高排序。因此,平均自上而下最低的人
const data = [
{
Name: "A Person",
Attendence: [
{
date: "2019/12/01",
attendence: 1
},
{
date: "2019/12/02",
attendence: 1
},
{
date: "2019/12/03",
attendence: 0
},
{
date: "2019/12/04",
attendence: 0
},
{
date: "2019/12/05",
attendence: 0.25
},
{
date: "2019/12/06",
attendence: 0.75
},
{
date: "2019/12/07",
attendence: 0.25
},
{
date: "2019/12/08",
attendence: 0.25
},
{
date: "2019/12/09",
attendence: 0
},
{
date: "2019/12/10",
attendence: 0
},
],
]
function Register(props) {
const classes = useStyles();
const data = props.attendence.map(attendence => (
attendence.average
))
// const classes = useStyles();
return (
<React.Fragment>
<Paper >
<Table aria-label="simple table">
<TableHead>
<TableRow>
<TableCell>Name</TableCell>
<TableCell align="right">Date</TableCell>
<TableCell align="right">Date</TableCell>
<TableCell align="right">Date</TableCell>
<TableCell align="right">Date</TableCell>
<TableCell align="right">Date</TableCell>
<TableCell align="right">Date</TableCell>
<TableCell align="right">Date</TableCell>
<TableCell align="right">Date</TableCell>
<TableCell align="right">Date</TableCell>
<TableCell align="right">Date</TableCell>
<TableCell align="right"> Average </TableCell>
</TableRow>
</TableHead>
<TableBody>
{props.attendence.map(attendence => (
<TableRow key={attendence.Name}>
<TableCell component="th" scope="row">
{attendence.Name}
</TableCell>
{attendence.Attendence.map(personAttendence => {
return (
<TableCell align="right">{personAttendence.attendence}</TableCell>
)
})}
<TableCell align="right" >{attendence.average}</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</Paper>
</React.Fragment>
);
}
答案 0 :(得分:3)
是的!最简单的方法是将sort your data传送到您的组件之前:
const data = [{ average: 3 }, {average: 8}, {average: 2}];
const sortedData = data.sort((a, b) => a.average - b.average);
请注意,Material UI表没有任何内置排序功能,因为它们不为您存储状态。您可以使用Material UI中提供的组件添加排序。有关如何执行此操作的a good example in the docs。
希望有帮助!
答案 1 :(得分:0)
根据文档,
<块引用>可以使用 GridColDef 接口的 sortModel 属性预先配置已排序的列:
就我而言,我有列名称电子邮件,需要在表加载时对其进行排序。
下面是代码
<DataGrid rows={rows} columns={columns} pageSize={5} sortModel={[{ field: 'emails', sort: 'asc' }]} />
检查文档
https://material-ui.com/components/data-grid/sorting/#data-grid-sorting