Google可视化DataTable:计算总计

时间:2013-01-30 09:06:59

标签: javascript google-visualization

我正在寻找一种方法来向一个简单的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);

如何从myTotal DataTable计算dt

是否可以将最后一行(Totals)设为粗体?

有没有更优雅的方法来向表中添加总计?

2 个答案:

答案 0 :(得分:0)

创建以下功能:

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);

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

答案 1 :(得分:0)

由于@ 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;');

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

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

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