如果我有一个已过滤的行视图,我如何在Google可视化中找到表格的原始行索引

时间:2017-10-20 01:13:09

标签: google-visualization rowfilter

我正在使用Google Visualization。我有一个数据表,我已使用getFilteredRows()

进行过滤

当我在筛选表中选择一行时,返回的行索引与屏幕上的行索引匹配,但我需要能够从基础源数据表返回原始行索引。

这可能吗?

我看过几篇使用

变体的帖子

table.getDataTable()。getTableRowIndex(currentRow)

但这两种方法似乎都不能再使用了吗?

有人知道解决方案吗? 感谢

1 个答案:

答案 0 :(得分:1)

getTableRowIndexDataView方法

如果您将dataTable属性设置为数据视图,则在图表包装器上


然后你可以用......

chartWrapper.getDataTable().getTableRowIndex(currentRow)

但是,如果dataTable属性是实际数据,则 此方法将不可用(因为它是一种数据视图方法)

如果使用数据表和图表包装的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();
});
&#13;
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>
<div id="test_div"></div>
&#13;
&#13;
&#13;