Javascript 过滤和重画google.visualization.DataTable时需要重新计算列值

Javascript 过滤和重画google.visualization.DataTable时需要重新计算列值,javascript,jquery,google-visualization,Javascript,Jquery,Google Visualization,我有以下代码: //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: "projectCha

我有以下代码:

 //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));
});
//创建一个数据表。别担心这个。这很有效
var projectData=createDataView(json);
//创建并绘制可视化。
var table=new google.visualization.ChartWrapper({
图表类型:“表格”,
集装箱:“项目图表”
});
//添加用户筛选器
var userFilter=new google.visualization.ControlWrapper({
“controlType”:“StringFilter”,
“containerId”:“userFilter”,
“选项”:{
“filterColumnLabel”:“用户”
}
});
var dashboard=new google.visualization.dashboard(
document.getElementById('projectChartContainer'))
.bind(userFilter,table);
函数drawTable()
{
dashboard.draw(项目数据、{
“allowHtml”:正确,
showRowNumber:true,
标题:“项目数据”,
宽度:中宽
});
//谷歌可视化风格
$(“.google可视化表td number”).addClass(“小”);
$(“.google可视化表td center”).addClass(“80”);
}
//设定宽度
middleWidth=$(“#contentMiddle”).width();
绘图台();
//如果用户调整了浏览器的大小,请更改宽度并重新绘制。
//这很难看,但这是我唯一能找到的方法。百分之一百是童车
$(窗口)。调整大小(函数(){
middleWidth=$(窗口).width()-142;
绘图台();
});
//将更改侦听器添加到表中
google.visualization.events.addListener(表'ready',function(){
//获取小时总数
var workedHours=0;
var-biledhours=0;
//这就是我需要帮助的地方!!!!!
/*var dataLength=table.getNumberOfRows();
对于(var x=0;x

就表格显示和过滤而言,一切正常。我需要的是一种获取新筛选表的列总数的方法。我可以使用projectData.getValue()第一次获取值,但无论过滤出什么,它都会返回相同的值。我可以在新绘制的表中没有行,它将显示与最初相同的值。我并不感到惊讶,因为我只是在换桌子,听着桌子被重新画出来。但我无法从表中获取任何值。我上面为table(即…table.getNumberOfRows())提供的函数不存在。这正是我希望发生的事情。关于如何获取筛选表的新列值,有什么想法吗?

我的建议是首先使用
var tableData=table.getDataTable()将表数据转换为datatable

该数据表将按表中所示进行筛选和排序。然后可以对tableData运行for()循环:

for (var x = 0; x < tableData.getNumberOfRows(); x++)
{
    workedHours += tableData.getValue(x, 7);
    billedHours += tableData.getValue(x, 9);
}
$("#totalWorked").text(workedHours);
$("#totalBilled").text(billedHours);
$("#totalsContainer").show();
for(var x=0;x
我的建议是首先使用
var tableData=table.getDataTable()将表数据转换为datatable

该数据表将按表中所示进行筛选和排序。然后可以对tableData运行for()循环:

for (var x = 0; x < tableData.getNumberOfRows(); x++)
{
    workedHours += tableData.getValue(x, 7);
    billedHours += tableData.getValue(x, 9);
}
$("#totalWorked").text(workedHours);
$("#totalBilled").text(billedHours);
$("#totalsContainer").show();
for(var x=0;x
完美!不知道我怎么会错过。太好了!不知道我怎么会错过。