【问题标题】:Google visualization DataTable: calculate totals谷歌可视化数据表:计算总数
【发布时间】:2013-01-14 01:03:43
【问题描述】:

我正在寻找一种方法来将一行总计添加到一个简单的 DataTable。这是我的代码:

// Create and populate the data table.
var dt = new google.visualization.DataTable();

dt.addColumn('string', 'Name');
dt.addColumn('number', 'Height');

dt.addRows([
    ['Tong Ning mu', 174],
    ['Huang Ang fa', 523],
    ['Teng nu', 86]
]);

var myTotal;
/* calculate total sum of column Height */
dt.addRow(['TOTAL', myTotal]);

// Create and draw the visualization.
visualization = new google.visualization.Table(document.getElementById('table'));
visualization.draw(dt, null);

如何从dtDataTable 计算出myTotal

是否可以将最后一行(总计)加粗?

有没有更优雅的方式向表格添加总计?

【问题讨论】:

    标签: javascript google-visualization


    【解决方案1】:

    创建以下函数:

    function getSum(data, column) {
        var total = 0;
        for (i = 0; i < data.getNumberOfRows(); i++)
            total = total + data.getValue(i, column);
        return total;
    }
    

    使用您创建的 google 数据表和列数组索引调用它。在你的情况下:

    var total = getSum(dt,1);
    

    然后,您可以将该总数添加到新的原始数据中,或者您想用它做什么。

    【讨论】:

      【解决方案2】:

      由于@Danny 的回复与我要对列求和的解决方案相同,所以我不会写它。

      要设置一个单元格属性你dataTable.setProperty(columnIndex,rowIndex,'style','font-weight:bold;');

      所以在你的情况下你会写
      dt.setProperty(0, 3, 'style','font-weight:bold;'); dt.setProperty(1, 3, 'style','font-weight:bold;');

      假设您提供了一个更大的数据表,为所有单元格键入它可能不方便,您可以使用 for 循环(使整个最后一行变为粗体):

      var lastRow = dt.getNumberOfRows()-1
      for (i=0, n=dt.getNumberOfColumns(); i < n; i++) {
         dt.setProperty(i, lastRow, 'style', 'font-weight:bold;');
      }
      

      遗憾的是,您无法将属性设置为整行/列(请参阅documentation 了解关于此的自定义属性)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-25
        • 2014-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多