1

当在 react-data-grid 中选中“全选”复选框时,我想编写一些自定义逻辑。那么当用户点击它时,我如何获得“全选”复选框的句柄呢?

这是一些 react-data-grid 示例的链接http://adazzle.github.io/react-data-grid/#/和 repo 的链接 https://github.com/adazzle/react-数据网格

在我的渲染()中,我定义了如下所示的 react-data-grid。
呈现时的表格看起来像这个反应数据网格演示

let dataGrid = <ReactDataGrid
            ref={node => this.grid = node}
            onGridSort={this.handleGridSort}
            enableCellSelect={true}
            columns={this._columns}
            rowGetter={this.rowGetter}
            rowsCount={this.getSize()}
            minWidth={this.state.width}
            minHeight={this.state.height}
            rowKey="id"
            rowHeight={90}
            headerRowHeight={35}
            rowSelection={{
                showCheckbox: true,
                enableShiftSelect: true,
                onRowsSelected: this.onRowsSelected,
                onRowsDeselected: this.onRowsDeselected,
                selectBy: {
                    indexes: this.state.selectedIndexes
                }
            }
            }
            emptyRowsView={EmptyRowsView}
        >
        </ReactDataGrid>;
4

2 回答 2

0

您可以通过计算选择的数量来实现这一点。

由于onRowsSelected: this.onRowsSelected调用了多少行,因此您可以在onRowsSelected()函数中创建逻辑。

你的函数应该是这样的:

onRowsSelected = (rows) => {
    this.setState({selectedIndexes: this.state.selectedIndexes.concat(rows.map(r => r.rowIdx))});

    let rowIndexes = rows.map(r => r.rowIdx);

    let totalSelected = rowIndexes.length + this.state.selectedIndexes.length;

    if(this.state.rows.length == totalSelected){
      console.log('All rows have been selected');
      //You argument here when SelectAll
    }
  };
于 2018-08-24T17:09:37.417 回答
0

ReactDataGrid 公开了一个 ref,我们可以在自定义组件中访问它。通过它我们可以访问“全选”复选框。

<ReactDataGrid
            ref={node => this.grid = node}
            ... >
</ReactDataGrid>;

在您的自定义组件中,我们可以访问“全选”复选框

this.grid.selectAllCheckbox.checked; //根据选中/未选中返回真/假

于 2018-08-28T19:23:10.720 回答