在谷歌可视化中,我实现了一个带有表格图表和一些控件过滤器的仪表板。

现在假设我有以下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
}

09-25 16:59