如果为可编辑列定义了分组聚合器,则在提交该列的编辑时,默认情况下该列的分组总数不会更新。
在下面的代码示例中,每当为某个列提交编辑时,我都可以调用dataView.refresh()
,但这会重新计算所有具有分组聚合器的列的分组聚合器总数。
grid.onCellChange.subscribe(function (e, args) {
var dataView = grid.getData();
var column = grid.getColumns()[args.cell];
if (column.id === 'MyEditableColumn') {
dataView.refresh();
}
});
对于数以千计的数据项和许多分组聚合器,在旧版浏览器中这可能是计算量很大,特别是如果在使用分组聚合器的列中的每次编辑之后发生这种情况。有没有办法只为一个列重新计算单个分组聚合器?
答案 0 :(得分:5)
首先,如果您使用的是DataView,您应该通知它该特定项目的更新:
grid.onCellChange.subscribe(function (e, args) {
dataView.updateItem(args.item.id, args.item);
});
现在,它现在的实施方式,将导致完全重新计算(而不仅仅是聚合器 - 过滤器,组等;所有这些都可能因项目的更改而发生变化!),对于甚至更老的浏览器来说,通常足够快至少50'000行。将recalc限制为仅特定列更改不起作用。