1
我有以下代碼:需要重新計算列值時,過濾google.visualization.DataTable和重繪
//creates a DataTable. don't worry about this. this works
var projectData = createDataView(json);
// Create and draw the visualization.
var table = new google.visualization.ChartWrapper({
chartType: "Table",
containerId: "projectChart"
});
// add user filter
var userFilter = new google.visualization.ControlWrapper({
'controlType': 'StringFilter',
'containerId': 'userFilter',
'options': {
'filterColumnLabel': 'User'
}
});
var dashboard = new google.visualization.Dashboard(
document.getElementById('projectChartContainer'))
.bind(userFilter, table);
function drawTable()
{
dashboard.draw(projectData, {
'allowHtml': true,
showRowNumber: true,
title: "Project Data",
width: middleWidth
});
// google visualization styles
$(".google-visualization-table-td-number").addClass("small");
$(".google-visualization-table-td-center").addClass("eighty");
}
// set width
middleWidth = $("#contentMiddle").width();
drawTable();
// if user resized the browser, change the width and redraw.
//this is ugly, but the only way i could find. 100% was buggy
$(window).resize(function() {
middleWidth = $(window).width()-142;
drawTable();
});
// add a change listener to table
google.visualization.events.addListener(table, 'ready', function() {
// get hour totals
var workedHours = 0;
var billedHours = 0;
// THIS IS WHERE I NEED HELP!!!!!
/*var dataLength = table.getNumberOfRows();
for (var x = 0; x < dataLength; x++)
{
workedHours += table.getValue(x, 7);
billedHours += table.getValue(x, 9);
}
$("#totalWorked").text(workedHours);
$("#totalBilled").text(billedHours);
$("#totalsContainer").show();*/
console.log(projectData.getValue(1,1));
});
一切正常,至於顯示錶和篩選。我需要的是一種獲取新過濾表格的列總數的方法。我可以使用projectData.getValue()第一次獲取這些值,但不管過濾了什麼,它都會返回相同的值。我可以在新繪製的表中沒有行,它將顯示與原來相同的值。我並不感到驚訝,因爲我真的只是改變桌子,聽着它被重新繪製。但我無法從表格中獲得任何值。我有上面的表函數(即... table.getNumberOfRows())不存在。這正是我想要發生的事情。任何想法如何獲得過濾表的新列值?
完美!不知道我是如何錯過的。 – pnkflydgr