我有一个图表包装器表和一个绑定到它的'select'事件监听器,用于检索行数据,如下所示:
var table = new google.visualization.ChartWrapper({
'chartType': 'Table',
'containerId': 'tableDiv',
'options': {
'allowHtml': true,
'page': 'enable',
'width':'100%',
'height':'270px',
'pageSize': 10,
}
});
google.visualization.events.addListener(table, 'ready', function () {
google.visualization.events.addListener(table, 'select', function(){
var selection = table.getChart().getSelection();
var row = selection[0].row;
var x=dataTable.getValue(row, 1);
var y=dataTable.getValue(row,3);
});
});
现在,当我在桌子的第一页或显示完整的表格时,此功能正常。但是,一旦完成某些排序/过滤/分页,检索到的行数据就是假的,因为隐藏的行不计算在内。
示例:我有一个包含10行的表。在每一个中都有一个字符串 - 'row1','row2','row3'......'row10'。然后我使用控件包装器来过滤表,这样只有5-10行可见。当我现在点击第5行时,它将其计为第1行,我不再获得正确的数据。
我有什么想法可以解决这个问题吗?
由于
答案 0 :(得分:1)
而不是使用原始dataTable
使用ChartWrapper
这将返回过滤的数据表
google.visualization.events.addListener(table, 'select', function(){
var selection = table.getChart().getSelection();
var row = selection[0].row;
var x=table.getDataTable().getValue(row, 1);
var y=table.getDataTable().getValue(row,3);
});
答案 1 :(得分:0)
我有类似的问题,但在我的情况下需要检索Chartwrapper中表格未显示的列中的值。幸运的是我的表中有一个唯一的索引,所以我抓住了这个值,然后过滤了dataTable的行以找到包含该值的行索引,然后将该值转换为整数,最后用它来选择正确的行,选择后从中选择一个值,在这种情况下是一个在新窗口中打开的URL
var view = new google.visualization.DataView(dataTable);
view.setRows(view.getSortedRows({column: 11, desc: true}));
view.setColumns([11,0,2,3,4,5,6,7,8,9]);
//create the handler for the selection on the table
google.visualization.events.addListener(table, 'select', selectHandler);
function selectHandler() {
var selection = table.getChart().getSelection();
for (var i = 0; i < selection.length; i++) {
var item = selection[i];
if (item.row != null) {
var id = table.getDataTable().getValue(item.row,0);
var urlRow = dataTable.getFilteredRows([{column: 11, value: id }]);
urlRow = parseInt(urlRow);
var url = dataTable.getFormattedValue(urlRow, 10);
window.open(url,'_blank');
}
}
}