【问题标题】:How to override select all action? material-table如何覆盖全选动作?材料表
【发布时间】:2019-12-04 05:15:57
【问题描述】:

Material-Table 允许禁用某些行被选中,但是当用户按下全选时,它会突出显示禁用的行。有没有办法让这个功能忽略被禁用的行?

禁用行的代码:

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

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

【问题讨论】:

    标签: reactjs material-table


    【解决方案1】:

    这显然是一个错误。

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

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

    如果你有像disableRow 这样的函数,你可以使用它来设置各个行的选中属性。这将让您控制选择。

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

    【讨论】:

    • 其他人已经为此打开了一个问题,开发人员要求将其发布在堆栈溢出上。不过感谢您的帮助,谢谢。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 2020-10-26
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 2020-05-16
      • 1970-01-01
      • 2021-10-31
      • 2021-04-12
      相关资源
      最近更新 更多