正如您所看到的,对于某些列,我必须在表格页脚中显示平均值/总计。我的代码适用于没有特殊格式的列,但是当存在特殊格式时,我们必须向NEG显示负值,在这种情况下,计算值不正确。所以我为所有单元格添加了数据值属性。现在我想在footerCallback中访问函数的每个单元格的数据值属性。
这是表
中示例单元格的html代码<td data-value="-3.78" class="red">
NEG
</td>
这是我的footerCallback代码。
"footerCallback": function(row, data, start, end, display) {
var api = this.api(),
data;
// Remove the formatting to get integer data for summation
var intVal = function(i) {
if (typeof i === 'string') {
//remove most useless characters
i = i.replace(/[\$,\),\-,\%,\NEG]/g, '');
//now replace ( with MIN
i = i.replace('(', 'MIN');
//check if i contains MIN, then remove it and multiply it with -1 to make it a negative number
if (i.includes("MIN")) {
i = i.replace('MIN', '');
i = i * (-1);
}
}
return typeof i === 'string' ? i.replace(/[\$,\),\%,\NEG]/g, '') * 1 : typeof i === 'number' ? i : 0;
};
var functionColumns = [@(string.Join(",", MathableColumns.Where(x => !string.IsNullOrEmpty(x))))];
for (var i = 0; i < functionColumns.length; i++) {
var colIndex = functionColumns[i];
total = api
.column(colIndex)
.data()
.reduce(function(a, b) {
return intVal(a) + intVal(b);
}, 0);
total = total.toFixed(2);
if (total < 0)
{
total = total * -1;
$(api.column(colIndex).footer()).html(
'('+total+')'
);
}
else
{
$(api.column(colIndex).footer()).html(
total
);
}
}
},
我做过一些研究,但找不到可靠的解决方案。
答案 0 :(得分:1)
看看这个小提琴 - http://live.datatables.net/dovirovo/1/edit,我相信,这是你想要的。代码的关键部分是:
totalValues = api.column(2).nodes().toArray().map(function(node) {
return $(node).attr('data-value');
});
这会收集该列的jQuery节点,提取属性,然后可以对其进行求和。
这只是对完整列进行总结,但是将它作为模板直接在当前页面上进行操作应该很简单,它只需要混合原始代码即可。