Skip to content

Commit a2a5555

Browse files
committed
fix #1391
1 parent 92975d1 commit a2a5555

File tree

2 files changed

+44
-13
lines changed

2 files changed

+44
-13
lines changed

src/BootstrapTable.js

+38-13
Original file line numberDiff line numberDiff line change
@@ -828,25 +828,50 @@ class BootstrapTable extends Component {
828828
}
829829

830830
handleAddRow = newObj => {
831+
let isAsync = false;
831832
const { onAddRow } = this.props.options;
833+
834+
const afterHandleAddRow = errMsg => {
835+
if (isAsync) {
836+
this.refs.toolbar.afterHandleSaveBtnClick(errMsg);
837+
} else {
838+
return errMsg;
839+
}
840+
};
841+
842+
const afterAddRowCB = errMsg => {
843+
if (typeof errMsg !== 'undefined' && errMsg !== '') return afterHandleAddRow(errMsg);
844+
if (this.allowRemote(Const.REMOTE_INSERT_ROW)) {
845+
if (this.props.options.afterInsertRow) {
846+
this.props.options.afterInsertRow(newObj);
847+
}
848+
return afterHandleAddRow();
849+
}
850+
851+
try {
852+
this.store.add(newObj);
853+
} catch (e) {
854+
return afterHandleAddRow(e.message);
855+
}
856+
this._handleAfterAddingRow(newObj, false);
857+
return afterHandleAddRow();
858+
};
859+
832860
if (onAddRow) {
833861
const colInfos = this.store.getColInfos();
834-
onAddRow(newObj, colInfos);
835-
}
862+
const errMsg = onAddRow(newObj, colInfos, afterAddRowCB);
836863

837-
if (this.allowRemote(Const.REMOTE_INSERT_ROW)) {
838-
if (this.props.options.afterInsertRow) {
839-
this.props.options.afterInsertRow(newObj);
864+
if (errMsg !== '' && errMsg !== false) {
865+
return errMsg;
866+
} else if (typeof errMsg === 'undefined') {
867+
return afterAddRowCB();
868+
} else {
869+
isAsync = true;
870+
return !isAsync;
840871
}
841-
return null;
842-
}
843-
844-
try {
845-
this.store.add(newObj);
846-
} catch (e) {
847-
return e.message;
872+
} else {
873+
return afterAddRowCB();
848874
}
849-
this._handleAfterAddingRow(newObj, false);
850875
}
851876

852877
getSizePerPage() {

src/toolbar/ToolBar.js

+6
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,12 @@ class ToolBar extends Component {
121121
return;
122122
}
123123
const msg = this.props.onAddRow(newRow);
124+
if (msg !== false) {
125+
this.afterHandleSaveBtnClick(msg);
126+
}
127+
}
128+
129+
afterHandleSaveBtnClick = (msg) => {
124130
if (msg) {
125131
this.refs.notifier.notice('error', msg, 'Pressed ESC can cancel');
126132
this.clearTimeout();

0 commit comments

Comments
 (0)