DataTables footerCallback - 以另一个列值为条件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataTables footerCallback - 以另一个列值为条件相关的知识,希望对你有一定的参考价值。
我正在尝试在DataTables中实现一个footerCallback,它根据同一行中不同列中的单元格对某些列进行条件求和。任何人都可以帮助我吗?我使用下面的代码并检查alert(cur_index);
但我认为它没有按预期工作。而且我没有得到一列正确的值。我的代码是:
pageTotal6 = api
.column( 6, { page: 'current'} )
.data()
.reduce( function (a, b) {
var cur_index = api.column(6).data().indexOf(b);
alert(cur_index);
alert(api.column(3).data()[cur_index]);
if (api.column(3).data()[cur_index] != "Pending review") {
return parseInt(a) + parseInt(b);
}
else { return parseInt(a); }
return intVal(a) + intVal(b);
}, 0 );
在第3列中我有一些重复值,我只想求第3列的不同值。我怎么能用datatable和html做这件事
有两种方法可以解决这个问题。
第一种方法 (我假设您正在使用C#中的Database [ViewModel]读取JSON数据,并使用服务器端处理)
使用下面的图像作为我如何解决问题的参考
我想总结一下“Amount”列,其中“Measure Type”(最后一列)!= 99.我用ViewModel做的第一件事是将列表传递给我的JSON对象是添加一个没有读取的列和列表中的任何MeasureType = 99行。
所以基本上我的JSON对象有两列读取Amount列数据,一个是可见的,你在图像中看到有所有数字,另一个看不见,只读取我想在页脚中求和的值。
while (MyDataReader.Read())
{
//get all other columns
//column with amount figures measuretype != 99
if (reportData.q_measuretype != 99)
{
reportData.amountNo99 = Convert.ToDecimal(String.Format("{0:0.00}", read["q_amount"]));
}
else
{
reportData.amountNo99 = 0;
}
list.Add(reportData);
}
在该步骤之后,然后在footerCallback函数中,您可以通过仅对不可见列求和来保持简单,因为当您将行列表放到页面上时已经设置了条件
totalNettNo99 = api
.column(8, { page: 'current' }) //remember this is the last invisible column
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
});
然后,您可以使用可见列3(索引2)上的总和更新页脚
$(api.column(2).footer()).html(
'€' + totalNettNo99.toFixed(2)
);
记得在“columnDefs”中以这种方式设置不可见列
"ajax": {
"url": "/Reports/loadTransactionList",
"type": "POST",
"datatype": "JSON"
},
"columnDefs": [
{
"targets": [8],
"visible": false,
"searchable": false,
"render": false
}
],
"columns": [
{
"data": "convertDateToString"
},
{
"data": "convertTimeToString"
},
{
"data": "q_receiptnumber"
},
从图像中可以看出,只有具有吉尼斯品脱的行总和页脚上的总和。它有点打字,但如果你用脚本解决方案撕裂你的头发,解决了问题。
第二种方法 你可以在这里看看这个答案纯粹是用脚本编写的,而不是输入我的解决方案
https://stackoverflow.com/a/42215009/7610106
归功于nkbved
以上是关于DataTables footerCallback - 以另一个列值为条件的主要内容,如果未能解决你的问题,请参考以下文章