SlickGrid icon indicating copy to clipboard operation
SlickGrid copied to clipboard

large row delete 10000 over

Open ewlove opened this issue 7 years ago • 1 comments

checked row item delete >> very slow & browser down plase tell me good way..

my source :

function doSelectedRemove(){

var selected = grid.getSelectedRows();
grid.getData().beginUpdate();
$.each(selected, function (index, value) {
    var id = grid.getData().getItem(index).id;
    grid.getData().deleteItem(id) ;
});
grid.getData().endUpdate();  
grid.setSelectedRows([]);

var cnt = grid.getDataLength();
$("#resultCount").text(cnt);

}

function getAjax(){

....

var data = jsonData.rows;

			dataView.setItems(data);
			
			grid = new Slick.Grid("#myGrid", dataView, columns, options);

			grid.setColumns(columns);
			
			  grid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow: false}));
			  grid.registerPlugin(checkboxSelector);
			  var columnpicker = new Slick.Controls.ColumnPicker(columns, grid, options);
			  
			  grid.onSort.subscribe(function(e, args) {

			      var cols = args.sortCols;
			      
			      dataView.sort(function(dataRow1, dataRow2) {
			        for (var i = 0, l = cols.length; i < l; i++) {
			          var field = cols[i].sortCol.field;
			          var sign = cols[i].sortAsc ? 1 : -1;
			          var value1 = dataRow1[field], value2 = dataRow2[field];
			          var result = (value1 == value2 ? 0 : (value1 > value2 ? 1 : -1)) * sign;
			          if (result != 0) {
			            return result;
			          }
			        }
			        return 0;
			      });
			    });

			  dataView.onRowCountChanged.subscribe(function (e, args) {
				    grid.updateRowCount();
				    grid.render();
			  });

			  dataView.onRowsChanged.subscribe(function (e, args) {
				    grid.invalidateRows(args.rows);
				    grid.render();
			  });

}

ewlove avatar Feb 02 '18 07:02 ewlove

The only way to do it effectively is to delete multiple rows on the server side. That's not straightforward, especially if the rows you are deleting are not all in one block. The grid uses 'ranges', which are a list of lines, eg: 5,67-233,4000-1000. This can be quite a complex problem, I'm afraid there is not an easy solution.

Here is a reasonable article about RBAR.

6pac avatar Feb 02 '18 08:02 6pac