访问数据表中函数的表格单元属性

时间:2018-04-23 15:46:06

标签: javascript jquery datatables

我有下表。 NEGATIVE Values

正如您所看到的,对于某些列,我必须在表格页脚中显示平均值/总计。我的代码适用于没有特殊格式的列,但是当存在特殊格式时,我们必须向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
                                    );
                                }

                            }
                        },

我做过一些研究,但找不到可靠的解决方案。

1 个答案:

答案 0 :(得分:1)

看看这个小提琴 - http://live.datatables.net/dovirovo/1/edit,我相信,这是你想要的。代码的关键部分是:

totalValues = api.column(2).nodes().toArray().map(function(node) {
  return $(node).attr('data-value');
});

这会收集该列的jQuery节点,提取属性,然后可以对其进行求和。

这只是对完整列进行总结,但是将它作为模板直接在当前页面上进行操作应该很简单,它只需要混合原始代码即可。