Jquery数据表总计列,其中值呈现为hyerpilnk

时间:2016-07-05 09:04:31

标签: jquery datatables

我正在使用带有.sum()插件选项的DataTables 1.10.11。

如果列是数字,我可以得到总和和总计。我的问题是很多列已被渲染为超链接以允许向下钻取。当我总结这些时,结果是南。

任何人都有任何想法如何解决这个问题。

以下代码适用于第13列,因为这不会呈现。第3-12列失败。

        $('#tblDebtors').dataTable({
              "autoWidth":false
            , "drawCallback": function() {
                    var api = this.api();

                    // Total over all pages
                    var total = api.column(13).data().sum();

                    $(api.column(13).footer()).html(fncFmtNbr(total,2,"Y","Y"));
                }
            , "footer": true
            , "info":false
            , "JQueryUI":true
            , "ordering":true
            , "paging":false
            , "scrollY":"470px"
            , "scrollX":"1485px"
            , "scrollCollapse":true
            , "columnDefs": [
                        { className: "Left", "targets": [ 0,1 ] }
                    ,   { className: "Center", "targets": [ 2 ] }
                    ,   { className: "Right", "targets": [ 3,4,5,6,7,8,9,10,11,12,13 ] }
                    ,   {"targets": 3,
                            "data": null,
                            "render": function ( data, type, row ) {
                                return '<a id="href_Current_'+row[0]+'" href="#">'+row[3]+'</a>';
                            }
                        }
                    ,   {"targets": 4,
                            "data": null,
                            "render": function ( data, type, row ) {
                                return '<a id="href_Pd1_'+row[0]+'" href="#">'+row[4]+'</a>';
                            }
                        }
                    ,   {"targets": 5,
                            "data": null,
                            "render": function ( data, type, row ) {
                                return '<a id="href_Pd2_'+row[0]+'" href="#">'+row[5]+'</a>';
                            }
                        }
                    ,   {"targets": 6,
                            "data": null,
                            "render": function ( data, type, row ) {
                                return '<a id="href_Pd3_'+row[0]+'" href="#">'+row[6]+'</a>';
                            }
                        }
                    ,   {"targets": 7,
                            "data": null,
                            "render": function ( data, type, row ) {
                                return '<a id="href_Pd4_'+row[0]+'" href="#">'+row[7]+'</a>';
                            }
                        }
                    ,   {"targets": 8,
                            "data": null,
                            "render": function ( data, type, row ) {
                                return '<a id="href_Pd5_'+row[0]+'" href="#">'+row[8]+'</a>';
                            }
                        }
                    ,   {"targets": 9,
                            "data": null,
                            "render": function ( data, type, row ) {
                                return '<a id="href_Pd6_'+row[0]+'" href="#">'+row[9]+'</a>';
                            }
                        }
                    ,   {"targets": 10,
                            "data": null,
                            "render": function ( data, type, row ) {
                                return '<a id="href_Pd7_'+row[0]+'" href="#">'+row[10]+'</a>';
                            }
                        }
                    ,   {"targets": 11,
                            "data": null,
                            "render": function ( data, type, row ) {
                                return '<a id="href_Older_'+row[0]+'" href="#">'+row[11]+'</a>';
                            }
                        }
                    ,   {"targets": 12,
                            "data": null,
                            "render": function ( data, type, row ) {
                                return '<a id="href_Total_'+row[0]+'" href="#">'+row[12]+'</a>';
                            }
                        }
                ]
        });

1 个答案:

答案 0 :(得分:0)

我猜你使用的是像this这样的东西,如果是这样的改变你的用例:

jQuery.fn.dataTable.Api.register('sum()', function (){
    return this.flatten().reduce(function(a, b){
        if (typeof a === 'string') {
            a = a.text().replace(/[^\d.-]/g, '') * 1;
        }
        if (typeof b === 'string') {
            b = b.text().replace(/[^\d.-]/g, '') * 1;
        }
        return a + b;
    }, 0);
});

请注意,如果没有JSFiddle示例,很难测试这种方法,但基本上我们是在锚点内的文本之后。我可以用十进制基数解析它,或者简单地做一个~~ ...

而不是将它乘以1

希望有所帮助