Google Timeline图表经ChartRangeFilter缩放后,如何关联选中行ID与原DataTable?
解决Google Timeline图表ChartRangeFilter缩放后选中行号与原DataTable关联的问题
- 问题本质:ChartRangeFilter缩放后,Timeline实际绑定的是DataView(原DataTable的子集视图),此时
getSelection()返回的row是视图内的相对索引,而非原表的实际行号。 - 解决思路:通过ChartWrapper获取当前绑定的数据源,若为DataView则调用其
getTableRowIndex()方法,将视图行号转换为原DataTable的实际行号。
修正后的代码示例
// 获取选中的视图行号 var viewRowId = chartWrapperObj.getChart().getSelection()[0].row; // 获取ChartWrapper当前的数据源(可能是DataView或原DataTable) var currentData = chartWrapperObj.getDataTable(); var originalRowId; // 判断数据源类型,转换行号 if (currentData instanceof google.visualization.DataView) { originalRowId = currentData.getTableRowIndex(viewRowId); } else { originalRowId = viewRowId; } // 从原DataTable中获取对应数据 var selectedValue = dataTable.getValue(originalRowId, 0);
- 补充说明:
getTableRowIndex()方法是DataView的原生方法,专门用于映射视图行到原DataTable的实际行索引,无论缩放、过滤操作多少次,都能准确关联原表数据。
内容的提问来源于stack exchange,提问作者Kannan
相关产品推荐
相关产品推荐

