From 28b75ce8da75d5b7600adfddccd36cf44068d08d Mon Sep 17 00:00:00 2001 From: afc163 Date: Fri, 1 Jan 2016 20:08:30 +0800 Subject: [PATCH] Add rowSelection onChange, #786 --- components/table/demo/row-selection-props.md | 5 ++++- .../table/demo/row-selection-radio-props.md | 3 --- components/table/demo/row-selection.md | 3 +++ components/table/index.jsx | 19 +++++++++++++++++-- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/components/table/demo/row-selection-props.md b/components/table/demo/row-selection-props.md index 7740a541a3..cfe6473a09 100644 --- a/components/table/demo/row-selection-props.md +++ b/components/table/demo/row-selection-props.md @@ -47,12 +47,15 @@ const rowSelection = { disabled: record.name === '胡彦祖' // 配置无法勾选的列 }; }, + onChange(selectedRowKeys) { + console.log('selectedRowKeys changed: ' + selectedRowKeys); + }, onSelect: function(record, selected, selectedRows) { console.log(record, selected, selectedRows); }, onSelectAll: function(selected, selectedRows) { console.log(selected, selectedRows); - } + }, }; ReactDOM.render( diff --git a/components/table/demo/row-selection-radio-props.md b/components/table/demo/row-selection-radio-props.md index d8fa9578dd..ac87677e68 100644 --- a/components/table/demo/row-selection-radio-props.md +++ b/components/table/demo/row-selection-radio-props.md @@ -51,9 +51,6 @@ const rowSelection = { onSelect: function(record, selected, selectedRows) { console.log(record, selected, selectedRows); }, - onSelectAll: function(selected, selectedRows) { - console.log(selected, selectedRows); - } }; function rowKey(record) { diff --git a/components/table/demo/row-selection.md b/components/table/demo/row-selection.md index 17e2d59335..980f4bd019 100644 --- a/components/table/demo/row-selection.md +++ b/components/table/demo/row-selection.md @@ -41,6 +41,9 @@ const data = [{ // 通过 rowSelection 对象表明需要行选择 const rowSelection = { + onChange(selectedRowKeys) { + console.log('selectedRowKeys changed: ' + selectedRowKeys); + }, onSelect: function(record, selected, selectedRows) { console.log(record, selected, selectedRows); }, diff --git a/components/table/index.jsx b/components/table/index.jsx index 5af5afeabb..58e8e1811a 100644 --- a/components/table/index.jsx +++ b/components/table/index.jsx @@ -88,6 +88,9 @@ let AntTable = React.createClass({ selectionDirty: false, selectedRowKeys: [], }); + if (this.props.rowSelection && this.props.rowSelection.onChange) { + this.props.rowSelection.onChange([]); + } } }, @@ -164,7 +167,7 @@ let AntTable = React.createClass({ }); } this.setState({ - selectedRowKeys: selectedRowKeys, + selectedRowKeys, selectionDirty: true }); if (this.props.rowSelection.onSelect) { @@ -174,6 +177,9 @@ let AntTable = React.createClass({ }); this.props.rowSelection.onSelect(record, checked, selectedRows); } + if (this.props.rowSelection.onChange) { + this.props.rowSelection.onChange(selectedRowKeys); + } }, handleRadioSelect: function (record, rowIndex, e) { @@ -183,7 +189,7 @@ let AntTable = React.createClass({ let key = this.getRecordKey(record, rowIndex); selectedRowKeys = [key]; this.setState({ - selectedRowKeys: selectedRowKeys, + selectedRowKeys, radioIndex: key, selectionDirty: true }); @@ -194,6 +200,9 @@ let AntTable = React.createClass({ }); this.props.rowSelection.onSelect(record, checked, selectedRows); } + if (this.props.rowSelection.onChange) { + this.props.rowSelection.onChange(selectedRowKeys); + } }, handleSelectAllRow(e) { @@ -228,6 +237,9 @@ let AntTable = React.createClass({ }); this.props.rowSelection.onSelectAll(checked, selectedRows); } + if (this.props.rowSelection.onChange) { + this.props.rowSelection.onChange(selectedRowKeys); + } }, handlePageChange(current) { @@ -244,6 +256,9 @@ let AntTable = React.createClass({ pagination }; this.setState(newState); + if (this.props.rowSelection && this.props.rowSelection.onChange) { + this.props.rowSelection.onChange([]); + } this.props.onChange.apply(this, this.prepareParamsArguments(objectAssign({}, this.state, newState))); },