RowGrouping and Subtotal on Datatable

匿名 (未验证) 提交于 2019-12-03 02:03:01

问题:

All, i am using RowGrouping on Data table,For each Group i need to do Subtotal on some of columns(Encum,Paid,Balance) and Total on All the row for Column(Encum,Paid,Balance). i am quite new to this Datatable and not able to achieve the result what i needed. Here is the code is have used. i need to display $value of 3 of those column and also do subtotal at the header. Please help me out here, code in jsfiddle: jsfiddle.net/6r2pjbg8

回答1:

Does this work for you?

var POdata = [{     "PO_Nbr": "3000202173",     "FY": 2015,     "LN": "1.1",     "FOA": "2500/T7935002/T790225",     "Proj_ID": "TLRR922B",     "Srce_Type": "6251",     "Encum_Amt": 66033.62,     "Paid": 36508.35,     "Balance": 29525.27 }, {     "PO_Nbr": "3000202173",     "FY": 2015,     "LN": "1.2",     "FOA": "2600/T7935002/T790226",     "Proj_ID": "TLRR922B",     "Srce_Type": "6251",     "Encum_Amt": 212824.56,     "Paid": 117665.45,     "Balance": 95159.11 }, {     "PO_Nbr": "3000143638",     "FY": 2014,     "LN": "1.1",     "FOA": "2500/T7935002/T790225",     "Proj_ID": "TLRR922B",     "Srce_Type": "6251",     "Encum_Amt": 32350.84,     "Paid": 32350.84,     "Balance": 0 }, {     "PO_Nbr": "3000143638",     "FY": 2014,     "LN": "1.2",     "FOA": "2600/T7935002/T790226",     "Proj_ID": "TLRR922B",     "Srce_Type": "6251",     "Encum_Amt": 104265.84,     "Paid": 104265.84,     "Balance": 0 }, {     "PO_Nbr": "3000079267",     "FY": 2013,     "LN": "1.1",     "FOA": "2500/T7935002/T790225",     "Proj_ID": "TLRR922B",     "Srce_Type": "9025",     "Encum_Amt": 21339.91,     "Paid": 21339.91,     "Balance": 0 }, {     "PO_Nbr": "3000079267",     "FY": 2013,     "LN": "1.2",     "FOA": "2600/T7935002/T790226",     "Proj_ID": "TLRR922B",     "Srce_Type": "9025",     "Encum_Amt": 68778.06,     "Paid": 68778.06,     "Balance": 0 }, {     "PO_Nbr": "3000038524",     "FY": 2012,     "LN": "1.1",     "FOA": "2500/T7935002/T790225",     "Proj_ID": "TLRR922B",     "Srce_Type": "9025",     "Encum_Amt": 12752.54,     "Paid": 12752.54,     "Balance": 0 }, {     "PO_Nbr": "3000038524",     "FY": 2012,     "LN": "1.2",     "FOA": "2600/T7935002/T790226",     "Proj_ID": "TLRR922B",     "Srce_Type": "9025",     "Encum_Amt": 41101.1,     "Paid": 41101.1,     "Balance": 0 }];  var table = $('#EncumbranceSummaryTable').DataTable({     "data": POdata,     "columns": [         {             "title": "PO #",             "data": "PO_Nbr",             "visible": false         }, {             "title": "FY",             "data": "FY"         }, {             "title": "LN",             "data": "LN",             "sortable": false         }, {             "title": "F/O/A",             "data": "FOA",             "sortable": false         }, {             "title": "Project ID",             "data": "Proj_ID",             "sortable": false         }, {             "title": "Srce Type",             "data": "Srce_Type",             "sortable": false         }, {             "title": "Encumbrance",             "data": "Encum_Amt",             "sortable": false         }, {             "title": "Paid",             "data": "Paid",             "sortable": false         }, {             "title": "Balance",             "data": "Balance",             "sortable": false         }     ],     "drawCallback": function (settings) {         var api = this.api();         var rows = api.rows({             page: 'current'         }).nodes();         var last = null;         api.column(0, {             page: 'current'         }).data().each(function (group, i) {             if (last !== group) {                 $(rows).eq(i).before(                 $("", {                     "class": "group",                     "data-id": group                 }).append($("", {                     "colspan": 5,                     "class": "pocell",                     "text": "PO # " + group                 })).append($("", {                     "id": "e" + group,                     "class": "noCount",                     "text": "0.00"                 })).append($("", {                     "id": "p" + group,                     "class": "noCount",                     "text": "0.00"                 })).append($("", {                     "id": "b" + group,                     "class": "noCount",                     "text": "0.00"                 })).prop('outerHTML'));                 last = group;             }             val = api.row(api.row($(rows).eq(i)).index()).data();             $("#e" + val.PO_Nbr).text(parseFloat($("#e" + val.PO_Nbr).text()) + parseFloat(val.Encum_Amt));             $("#p" + val.PO_Nbr).text(parseFloat($("#p" + val.PO_Nbr).text()) + parseFloat(val.Paid));             $("#b" + val.PO_Nbr).text(parseFloat($("#b" + val.PO_Nbr).text()) + parseFloat(val.Balance));         });     },     "footerCallback": function (row, data, start, end, display) {         var api = this.api();         $(api.column(6).footer()).html(             api.column(6).data().reduce(function (a, b) {                 return parseFloat(a) + parseFloat(b);             })         );         $(api.column(7).footer()).html(             api.column(7).data().reduce(function (a, b) {                 return parseFloat(a) + parseFloat(b);             })         );         $(api.column(8).footer()).html(             api.column(8).data().reduce(function (a, b) {                 return parseFloat(a) + parseFloat(b);             })         );     } }); 

Working JSFiddle.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!