是否有“内置”方法仅使用可见行从仪表板表创建数据视图?在我编写一个不必要的冗长的替代方案之前我想知道!
修改
我在参考文档中忽略了这一点,但它并没有完全解决问题,因为你仍然需要做一些jiggery pokery来获取破折号上活动过滤器的状态并将它们传递给getFilteredRows()方法。 / p>
您可以使用getFilteredRows()方法“返回与所有给定过滤器匹配的行的行索引。索引按升序返回。此方法的输出可用作DataView.setRows的输入( )“
https://developers.google.com/chart/interactive/docs/reference#DataView
答案 0 :(得分:2)
使用仪表板时需要包装Table的ChartWrapper对象有一个“view”参数,可用于定义要用于该图表的DataView:
var table = new google.visualization.ChartWrapper({
chartType: 'Table',
containerId: 'myTableDiv',
options: {
// table options
},
view: {
columns: [/* columns used for the view */]
}
});
答案 1 :(得分:1)
为了让任何可能觉得有用的人受益,以下是我解决问题的方法:
首先,从仪表板
创建一个控制状态数组control_states = [ctrl1.getState(),ctrl2.getState(),ctrl3.getState()];
接下来,为每个控件创建所有选择的数组
var filteredrows = [ ];
var cnt = 0;
for (var i = 0; i < control_states.length; i++) {
var picker_state = control_states[i]
for (var j = 0; j < picker_state.selectedValues.length; j++) {
filteredrows[cnt] = [ ];
filteredrows[cnt]["column"] = i;
filteredrows[cnt]["value"] = picker_state.selectedValues[j];
cnt += 1;
};
};
创建新的数据视图并将filteredrows数组传递给setRows方法:
var filterdata = new google.visualization.DataView(data)
filterdata.setRows(
filterdata.getFilteredRows(filteredrows)
);