SlickGrid
SlickGrid copied to clipboard
large row delete 10000 over
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();
});
}
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.