我使用 Google HTML 服务创建了一个 google 可视化仪表板。底层数据表 (jjdt) 是从多个数据表(如 jadt2、fa)连接而成的。
jjdt = google.visualization.data.join(jadt2,fa,'left',[[0,0]],[1,2,3,4,5,6,7,8,9,10,11],[2,3]);
然后我创建了一个图表包装器(finalTable)来在仪表板中显示表格。
finalTable = new google.visualization.ChartWrapper({
'chartType': 'Table',
'containerId': 'table-div',
'options': {
'showRowNumber': false,
'width': '100%',
'height': '100%',
'allowHtml': true,
'pageSize': 20
}
});
dashboard.bind(wwPicker, [finalTable]);
dashboard.draw(jjdt);
这些代码工作正常。
现在我想要做的是允许单击按钮将基础表(jjdt)中的某些单元格设置为新值并将其反映在仪表板上。但这并不像我想象的那么简单。
我尝试了两件事:
1) 使用javascript更新对应单元格(x,y)的jjdt表并调用finalTable.draw();
jjdt.setCell(x,y,'New Value');
finalTable.draw();
但这没有效果,也没有错误消息。
2)我认为图表包装器可能创建了数据表的副本。所以我尝试取回该数据表:
var mydt = finalTable.getDataTable();
mydt.setCell(x,y,'New Value');
finalTable.draw();
我认为这是文档https://developers.google.com/chart/interactive/docs/reference#methods_4中描述的正确方法
但是,我收到一条错误消息,说 setCell 不是 mydt 的函数,即使我可以调用 mydt.getValue()。好像我的数据表“不知何故”是只读的?但它是 DataTable 而不是 DataView .. 为什么会这样?