如何覆盖选择所有动作?材料表

时间:2019-12-04 05:15:57

标签: reactjs material-table

材料表允许禁用某些行,但是当用户然后按全选时,它将突出显示禁用的行。有什么方法可以让此功能忽略被禁用的行?

禁用行的代码:

options={{
    selection: true,
    selectionProps: rowData => ({
        disabled: disableRow(rowData)
    })
}}

使用全选来选择禁用行的图像示例:

proving you can select disabled rows with select all checkbox

2 个答案:

答案 0 :(得分:1)

这是一个很明显的错误。

现在,您可以通过将onSelectionChange中禁用的行的tableData.checked设置为false来修复它。如果数据保存在this.state中,并且您要禁用所有行,请使用以下命令:

 onSelectionChange={(rows) => this.setState({data: rows.map(row => ({
    ...row,
    tableData:{
    ...row.tableData,
    checked: false
    }
    }))})}

如果您具有类似disableRow的功能,则可以使用它来设置各个行的选中属性。这样您就可以控制选择。

您应该打开一个问题来解决在材料表上选择的禁用行的问题,以便将来解决。

答案 1 :(得分:0)

这在我的情况下有效(不使用任何 setState):

data={yourData.map(row => {
  row.tableData = {...row.tableData, disabled: disableRow(row)};
  return rowData;
})}
options={{
  selectionProps: row => ({disabled: row.tableData.disabled})
}}