过滤并重新绘制google.visualization.DataTable时,需要重新计算列值
Need to recalculate column values when google.visualization.DataTable is filtered and redrawn
我有以下代码:
//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提供的函数(即…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();
相关文章:
- 从HTML表单中获取计算得到的JavaScript数据,并将其作为新元素添加到相同的表单操作中以使用PHP保存
- 点击功能打开新窗口并计算点击次数
- 如何计算缩放后画布的新高度和宽度
- 根据计算计算小计
- 在不重置对象的情况下重新计算计算可观察量
- 如何计算 SharePoint 库/列表中的新项目数
- 两个具有相同值的对象,计算和更改一个对象的值.第二个也具有新的价值
- 修改函数以计算到新的一年,而不是返回值 12/33/2014
- JavaScript 中的 HTTP 摘要.新 URI 的 MD5 重新计算
- 新偏移量更新字体大小后不计算高度
- 访问内部属性名称以计算 ES6 中的新属性
- d3:计算两个节点之间的线的中点,画一条从它到一个新节点成90度角的线
- 如何计算幻灯片中的翻转次数(查看的新幻灯片)
- 如何计算新项目在转换容器中的位置
- 计算JavaScript数组元素的出现次数,并放入一个新的2d数组
- 如何从JavaScript对象中具有关系的数字计算新值
- 如何计算文本区域内的新行数
- 使用javascript(新字段)计算输入值
- 一个错误事件添加一个新类并计算它替换图像源的次数
- 如何通过计算文件夹中的文件数量来避免创建新文件