如果我有过滤行视图,如何在 google 可视化中找到 table 的原始行索引

How to I find the original row index of a table in a google visualization if I have a filtered rows view

我正在使用 Google 可视化。我有一个数据 table 我已经使用 getFilteredRows()

过滤了

当我 select 过滤后的一行 table 行索引 returned 与屏幕上的行索引匹配,但我需要能够 return来自基础源数据的原始行索引 table.

这可能吗?

我看过一些使用

变体的帖子

table.getDataTable().getTableRowIndex(currentRow)

但这两种方法好像都不能用了?

有人知道解决办法吗? 谢谢

getTableRowIndex 是一个 DataView 方法

在图表包装器上,如果将 dataTable 属性 设置为数据 view,
那么你可以使用...

chartWrapper.getDataTable().getTableRowIndex(currentRow)

然而,如果dataTable属性是一个实际数据table
此方法将不可用(因为它是一种数据查看方法)


如果使用数据 table 和图表包装器的 view 属性 来设置 rows,
使用...找到实际行...

chartWrapper.getView().rows[currentRow]

请参阅以下工作片段...

google.charts.load('current', {
  packages: ['controls']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ['Year', 'Sales', 'Expenses', 'Profit'],
    ['2012', 900, 700, 200],
    ['2013', 890, 600, 290],
    ['2014', 1000, 400, 200],
    ['2015', 1170, 460, 250],
    ['2016', 660, 1120, 300],
    ['2017', 1030, 540, 350]
  ]);

  var chartTable = new google.visualization.ChartWrapper({
    chartType: 'Table',
    containerId: 'chart_div',
    dataTable: data,
    view: {
      rows: data.getFilteredRows([{
        column: 1,
        minValue: 1000
      }])
    }
  });

  var testDiv = document.getElementById('test_div');
  google.visualization.events.addOneTimeListener(chartTable, 'ready', function () {
    google.visualization.events.addListener(chartTable.getChart(), 'select', function () {
      testDiv.innerHTML = '';
      var selection = chartTable.getChart().getSelection();
      for (var i = 0; i < selection.length; i++) {
        var selectedRow = selection[i].row;
        var dataTableRow = chartTable.getView().rows[selectedRow];
        var values = '';
        for (var col = 0; col < data.getNumberOfColumns(); col++) {
          if (values !== '') {
            values += ' -- ';
          }
          values += data.getValue(dataTableRow, col);
        }
        values += '<br/>';
        testDiv.insertAdjacentHTML('beforeEnd', values);
      }
    });
  });

  chartTable.draw();
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>
<div id="test_div"></div>