我正在使用Google Visualization。我有一个数据表,我已使用getFilteredRows()
进行过滤当我在筛选表中选择一行时,返回的行索引与屏幕上的行索引匹配,但我需要能够从基础源数据表返回原始行索引。
这可能吗?
我看过几篇使用
变体的帖子table.getDataTable()。getTableRowIndex(currentRow)
但这两种方法似乎都不能再使用了吗?
有人知道解决方案吗? 感谢
答案 0 :(得分:1)
getTableRowIndex
是DataView方法
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;