当react-data-grid中的"select all“复选框被选中时,我想编写一些自定义逻辑。那么,当用户单击"select all“复选框时,如何获得该复选框句柄呢?
下面是指向一些react-data-grid示例http://adazzle.github.io/react-data-grid/#/的链接和指向存储库https://github.com/adazzle/react-data-grid的链接
在我的render()中,我定义了react-data-grid,如下所示。
呈现该表时,它看起来像这样的react data grid demo
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>;发布于 2018-08-25 01:09:37
您可以通过计算选择了多少来实现这一点。
因为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-29 03:23:11
ReactDataGrid公开了一个引用,我们可以在自定义组件中访问它。通过它,我们可以访问“全选”复选框。
<ReactDataGrid
ref={node => this.grid = node}
... >
</ReactDataGrid>;在自定义组件中,我们可以访问“全选”复选框,如下所示
this.grid.selectAllCheckbox.checked; //根据选中/取消选中返回true/false
https://stackoverflow.com/questions/51994815
复制相似问题