Я нашел обходной путь, вы должны использовать chartWrapper без панели инструментов, чтобы вы могли передать dataTable в качестве параметра:
var $pieChart = new google.visualization.ChartWrapper({
'chartType': 'PieChart',
'containerId': 'pie_chart',
'options': {
'width': 300,
'height': 300,
},
//group the data for the pie chart
'dataTable' : google.visualization.data.group($dataTable, [0],
[{'column': 3, 'aggregation': google.visualization.data.sum, 'type': 'number'}])
});
$pieChart.draw();
$tableWrapper = new google.visualization.ChartWrapper({
'chartType': 'Table',
'containerId': 'table_data'
});
var $genderPicker = new google.visualization.ControlWrapper({
'controlType': 'CategoryFilter',
'containerId': 'gender_filter',
'options': {
'filterColumnIndex': '2',
'useFormattedValue' : true,
'ui': {
'allowTyping': false,
'allowMultiple': false,
'labelStacking': 'vertical'
}
}
});
new google.visualization.Dashboard(document.getElementById('table_dashboard')).
bind([$genderPicker], [ $tableWrapper]).
draw($dataTable);
Затем вы должны добавить обратный вызов к своим элементам управления, чтобы всякий раз, когда элемент управления изменяет диаграммы вне панели мониторинга, будет обновляться, как при ручной привязке, давайте предположим, что для элемента управления cust_sex установлено значение $ гендерный выбор, а объект таблицы ChartWrapper - $ tableWrapper:
google.visualization.events.addListener($genderPicker, 'statechange',
function(event) {
// group the data of the filtered table and set the result in the pie chart.
$pieChart.setDataTable( google.visualization.data.group(
// get the filtered results
$tableWrapper.getDataTable(),
[0],
[{'column': 3, 'aggregation': google.visualization.data.sum, 'type': 'number'}]
));
// redraw the pie chart to reflect changes
$pieChart.draw();
});
Результат: всякий раз, когда вы выбираете мужской, женский или оба круговых диаграммы, будут отображаться отфильтрованные результаты, сгруппированные по имени. Надеюсь, это кому-нибудь поможет и извините за мой ломаный английский.