diff --git a/src/sql/workbench/contrib/editData/browser/editDataGridPanel.ts b/src/sql/workbench/contrib/editData/browser/editDataGridPanel.ts index e3d430ac38..cdcd337bd5 100644 --- a/src/sql/workbench/contrib/editData/browser/editDataGridPanel.ts +++ b/src/sql/workbench/contrib/editData/browser/editDataGridPanel.ts @@ -292,11 +292,6 @@ export class EditDataGridPanel extends GridParentComponent { return; } - if (this.isNullRow(row)) { - self.addRow(row); - self.refreshGrid(); - } - let cellSelectTasks: Promise = this.submitCurrentCellChange( (result: EditUpdateCellResult) => { // Cell update was successful, update the flags @@ -549,7 +544,15 @@ export class EditDataGridPanel extends GridParentComponent { private submitCurrentCellChange(resultHandler, errorHandler): Promise { let self = this; let updateCellPromise: Promise = Promise.resolve(); + let refreshGrid = false; if (this.currentCell && this.currentCell.isEditable && this.currentEditCellValue !== undefined && !this.removingNewRow) { + if (this.isNullRow(this.currentCell.row)) { + refreshGrid = true; + // We've entered the "new row", so we need to add a row and jump to it + updateCellPromise = updateCellPromise.then(() => { + return self.addRow(this.currentCell.row); + }); + } // We're exiting a read/write cell after having changed the value, update the cell value in the service updateCellPromise = updateCellPromise.then(() => { // Use the mapped row ID if we're on that row @@ -562,6 +565,9 @@ export class EditDataGridPanel extends GridParentComponent { result => { self.currentEditCellValue = undefined; let refreshPromise: Thenable = Promise.resolve(); + if (refreshGrid) { + refreshPromise = self.refreshGrid(); + } return refreshPromise.then(() => { return resultHandler(result); });