仅重新计算一列的SlickGrid分组聚合器总计

kav*_*vun 2 javascript slickgrid

如果为可编辑列定义了分组聚合器,则在提交该列的编辑时,默认情况下该列的分组总计不会更新.

在下面的代码示例中,dataView.refresh()每当为某个列提交编辑时,我都可以调用,但这会重新计算具有分组聚合器的所有列的分组聚合器总数.

grid.onCellChange.subscribe(function (e, args) {
    var dataView = grid.getData();
    var column = grid.getColumns()[args.cell];
    if (column.id === 'MyEditableColumn') {
        dataView.refresh();
    }
});
Run Code Online (Sandbox Code Playgroud)

对于数千个数据项和许多分组聚合器,在旧版浏览器中这可能是计算量很大,特别是如果在具有分组聚合器的列中的每次编辑之后发生这种情况.有没有办法只为列重新计算单个分组聚合器?

Tin*_*Tin 5

首先,如果您使用的是DataView,您应该通知它该特定项目的更新:

grid.onCellChange.subscribe(function (e, args) {
  dataView.updateItem(args.item.id, args.item);
});
Run Code Online (Sandbox Code Playgroud)

现在,它现在实施的方式,它将导致完全重新计算(而不仅仅是聚合器 - 过滤器,组等;所有这些可能由于项目的更改而改变了!),这通常很快足够在甚至更旧的浏览器中至少50'000行.将recalc限制为仅特定列更改不起作用.