3

我正在寻找一种将一行总计添加到简单 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);

如何myTotaldtDataTable 计算?

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

有没有更优雅的方式将总计添加到表格中?

4

2 回答 2

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

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

于 2015-05-21T04:54:07.220 回答
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;');

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

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

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

于 2015-05-21T06:39:00.277 回答