diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js index 05deebc41..eb32c06f2 100644 --- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js +++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js @@ -3544,17 +3544,33 @@ define('tools.querytool', [ // Remove deleted rows from client as well if (is_deleted) { var rows = _.keys(self.data_store.deleted); + if (data_length == rows.length) { // This means all the rows are selected, clear all data data = []; dataView.setItems(data, self.client_primary_key); } else { dataView.beginUpdate(); - for (var j = 0; j < rows.length; j++) { - var item = grid.getDataItem(rows[j]); - data.push(item); - dataView.deleteItem(item[self.client_primary_key]); + + var selectedRows = RangeSelectionHelper.getIndexesOfCompleteRows(grid, grid.getSelectionModel().getSelectedRanges()); + + var primary_keys = _.values(self.data_store.deleted); + + for (var j = 0; j < selectedRows.length; j++) { + var item = grid.getDataItem(selectedRows[j]); + _.each(primary_keys, function(v) { + + let actual_prim_delete_key = _.keys(v)[0]; + let actual_prim_delete_value = _.values(v)[0]; + let selected_prim_delete_value = item[actual_prim_delete_key]; + + if(actual_prim_delete_value == selected_prim_delete_value) { + data.push(item); + dataView.deleteItem(item[self.client_primary_key]); + } + }); } + dataView.endUpdate(); } self.rows_to_delete.apply(self, [data]);