在谷歌可视化中,我实现了一个带有表格图表和一些控件过滤器的仪表板。
现在假设我有以下dataTable:
data = new google.visualization.DataTable();
data.addColumn('string','Name');
data.addColumn('number', 'Age');
data.addRows([
['Customer1', 85],
['Customer2', 20],
['Customer3', 30],
]);
如果我选择第一行(Customer1),然后输入:
var tmpData = table.getChart().getSelection();
var stringCustomer = data.getValue(tmpData.row, 0)
stringCustomer是“ Customer1”。
现在,我过滤表图表以仅显示年龄== 30的客户:我只有一行,即Customer3,然后选择该行。
var tmpData = table.getChart().getSelection();
var stringCustomer = data.getValue(tmpData.row, 0)
使用此代码,stringCustomer始终是Customer1。我如何获得Customer3? getValue()如何返回表图表上显示项目的项目?
最佳答案
该选择返回表或图表而非基本DataTable看到的数据中所选元素的索引。仪表板将DataView传递给每个ChartWrapper,您可以通过ChartWrapper#getDataTable
方法进行访问。使用它来获取数据:
var selection = table.getChart().getSelection(),
view = table.getDataTable(),
stringCustomer;
// loop over all selected rows
for (var i = 0; i < selection.length; i++) {
stringCustomer = view.getValue(selection[i].row, 0);
// do something with stringCustomer
}