如何覆盖select所有动作? material-table
How to override select all action? material-table
Material-Table 允许禁用某些行 selected,但是当用户随后按下 select all 时,它将突出显示禁用的行。有什么方法可以让这个功能忽略被禁用的行吗?
禁用行的代码:
options={{
selection: true,
selectionProps: rowData => ({
disabled: disableRow(rowData)
})
}}
select禁用行的图像示例 select 全部:
这是一个明显的错误。
目前,您可以通过将 onSelectionChange 中禁用的行的 tableData.checked 设置为 false 来修复它。如果数据保存在 this.state 内并且您想禁用所有行,请使用:
onSelectionChange={(rows) => this.setState({data: rows.map(row => ({
...row,
tableData:{
...row.tableData,
checked: false
}
}))})}
如果你有像 disableRow
这样的函数,你可以使用它来为单独的行设置 checked 属性。这将让您控制选择。
您应该在 material-table 打开一个问题来解决禁用行的选择,以便将来解决这个问题。
这对我有效(不使用任何 setState
):
data={yourData.map(row => {
row.tableData = {...row.tableData, disabled: disableRow(row)};
return rowData;
})}
options={{
selectionProps: row => ({disabled: row.tableData.disabled})
}}
Material-Table 允许禁用某些行 selected,但是当用户随后按下 select all 时,它将突出显示禁用的行。有什么方法可以让这个功能忽略被禁用的行吗?
禁用行的代码:
options={{
selection: true,
selectionProps: rowData => ({
disabled: disableRow(rowData)
})
}}
select禁用行的图像示例 select 全部:
这是一个明显的错误。
目前,您可以通过将 onSelectionChange 中禁用的行的 tableData.checked 设置为 false 来修复它。如果数据保存在 this.state 内并且您想禁用所有行,请使用:
onSelectionChange={(rows) => this.setState({data: rows.map(row => ({
...row,
tableData:{
...row.tableData,
checked: false
}
}))})}
如果你有像 disableRow
这样的函数,你可以使用它来为单独的行设置 checked 属性。这将让您控制选择。
您应该在 material-table 打开一个问题来解决禁用行的选择,以便将来解决这个问题。
这对我有效(不使用任何 setState
):
data={yourData.map(row => {
row.tableData = {...row.tableData, disabled: disableRow(row)};
return rowData;
})}
options={{
selectionProps: row => ({disabled: row.tableData.disabled})
}}