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

在下面的代码示例中,每当对特定列进行提交编辑时,我都可以调用dataView.refresh(),但这将重新计算所有带有分组聚合器的列的的分组聚合器总数。

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

对于成千上万的数据项和许多分组聚合器,这在较旧的浏览器中可能会占用大量计算资源,尤其是如果在使用分组聚合器的列中进行每次编辑之后都会发生这种情况。是否有一种方法可以只为一个列重新计算一个分组聚合器?

最佳答案

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

grid.onCellChange.subscribe(function (e, args) {
  dataView.updateItem(args.item.id, args.item);
});

现在,按照现在的实现方式,它将导致完全重新计算(而不仅仅是聚合器-过滤器,组等;所有这些都可能由于项的更改而改变了!),通常这很快即使在较旧的浏览器中也足以容纳至少5万行。将重新计算限制为仅特定的列更改将无法正常工作。

08-05 16:06