Slickgrid:如何从分组中排除一行。或者如何添加所有分组的grandtotal行

时间:2014-08-13 14:22:57

标签: javascript slickgrid

实施例: http://mleibman.github.io/SlickGrid/examples/example-grouping

这个示例仅在每个分组级别给出总计,我希望得到所有分组的总数。

如果我将总计添加为新行,它也会被分组,我想将其排除。 有没有可用的选项?

2 个答案:

答案 0 :(得分:1)

我在下面的类似问题中做过。

   function filter(item) {
    if (item["YourTotalColumnName"]) {
        if (item["YourTotalColumnName"] == 'YOUR TOTAL WORD') {
            return false;
        }
    }
    return true;
}

function filterClear(item) {
    return true;
}

当你分组并清除分组时,你可以这样做:

function groupBySomeColumn() {

    dataView.setFilter(filter);
...
...
}

function clearGrouping() {
    dataView.setGrouping([]);

    dataView.setFilter(filterClear);
}

我希望这可以帮到你

答案 1 :(得分:0)

要控制数据聚合的行为,您必须实现自己的聚合器。可以在slick.dataview.js的源代码中看到内置聚合器集。

如果您正在使用其中一个默认实现,则可以" hack"通过声明2级数据分组的解决方案,最外层是在每个数据条目具有相同值的垃圾数据列上。我不建议采取这种方式,但想说明它是"是"可能没有完全自定义的实现。

dataView.setGrouping([
 {
    getter: "myJunkColumn",
    formatter: function (g) {
     return "";
    },
    aggregators: [ new Slick.Data.Aggregators.Sum("data") ],
    aggregateCollapsed: false,
    lazyTotalsCalculation: true
 },
 {
   getter: "year",
   formatter: function (g) {
     return "Year(s): " + g.value + " <span style='color:green'>(" + g.count + " items) </span>";
   },
   aggregators: [ new Slick.Data.Aggregators.Sum("data") ],
   aggregateCollapsed: false,
   lazyTotalsCalculation: true
 }]);

FIDDLE