Я написал следующий код, куда данные загружаются на Scroll:
$('#tblDiscount').DataTable({
serverSide: true, // true
ordering: false, // false
searching: false, // false
lengthChange: false, // pagesize
footer: true,
columnDefs: [{ targets: [14, 16, 17], className: 'dt-body-right' }, { targets: [15], className: 'dt-body-center' },
{
targets: [9,13],
render:$.fn.dataTable.render.moment()
}
],
//searching: true,
dom: 'frBtip',
async: false,
ajax: function (data, callback, settings) {
var skip = 0;
if (data.start == 0)
skip = 0;
else
skip = data.start + 50; //data.length;
$.ajax({
url: '/Utility/_GetTestData',
data: {
State: stat,
Zone: zon,
Amrac: amr,
Store: store,
Hierarchy: hirarcy,
DiscountType: discountType,
Itemcategorycode: itemcatCode,
Itemcode: code,
Period: period,
OfferNo: offernumber,
skipRows: skip,
limit: 50 //data.length
},
datatype: "Json",
async: false,
success: function (data) {
//var item = $.parseJSON(data);
countRecords = data.recordCount;
totalOfDiscount = data.sumDiscount;
$("#tblDiscount_paginate").hide();
for (var i = 0; i < data.res.length; i++) {
if (hirarcy == "I") {
//out.push([i + '-1', i + '-2', i + '-3', i + '-4', i + '-5', i + '-6', i + '-7', i + '-8', i + '-9', i + '-10', i + '-11', i + '-12', i + '-13', i + '-14', i + '-15', i + '-16', i + '-17', i + '-18', i + '-19', i + '-20', i+'-21', i+'-22']);
out.push([data.res[i].state, data.res[i].zone, /*data.res[i].amro, data.res[i].rac,*/
data.res[i].Depot, /*data.res[i].type,*/ data.res[i].StoreCode, data.res[i].OfferType, data.res[i].DiscountType,
data.res[i].OfferNo, data.res[i].Description, data.res[i].ReceiptNo, data.res[i].TransDate,
data.res[i].Category, data.res[i].ItemCode, data.res[i].LotNo, data.res[i].ExpirationDate,
data.res[i].Quantity, data.res[i].FreeItem, data.res[i].NetValue, data.res[i].Discount/*, data.res[i].CrossReference*/]);
//out.push([data[i].state, data[i].zone]);
}
else if (hirarcy == "S") {
out.push([data.res[i].state, data.res[i].zone, data.res[i].amro, /*data.res[i].rac,*/
/* data.res[i].Depot*//*, data.res[i].type,*/ data.res[i].StoreCode, data.res[i].OfferType, data.res[i].DiscountType,
data.res[i].OfferNo, data.res[i].Description, data.res[i].ReceiptNo, data.res[i].TransDate,
data.res[i].Category, data.res[i].ItemCode, data.res[i].LotNo, data.res[i].ExpirationDate,
data.res[i].Quantity, data.res[i].FreeItem, data.res[i].NetValue, data.res[i].Discount/*, data.res[i].CrossReference*/]);
}
else if (hirarcy=="F") {
out.push([data.res[i].state, data.res[i].zone,/* data.res[i].amro,*/ data.res[i].rac,
/* data.res[i].Depot,*/ /*data.res[i].type,*/ data.res[i].StoreCode, data.res[i].OfferType, data.res[i].DiscountType,
data.res[i].OfferNo, data.res[i].Description, data.res[i].ReceiptNo, data.res[i].TransDate,
data.res[i].Category, data.res[i].ItemCode, data.res[i].LotNo, data.res[i].ExpirationDate,
data.res[i].Quantity, data.res[i].FreeItem, data.res[i].NetValue, data.res[i].Discount/*,data.res[i].CrossReference*/]);
}
}
//console.log(out.length);
},
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 500) {
alert('Internal error: ' + jqXHR.responseText);
} else {
alert('Please revise your FILTER selection as the \n' +
'information You are fetching has more than 1 lac Records');
location.reload(true);
}
}
});
setTimeout(function () {
callback({
draw: data.draw,
data: out,
recordsTotal: parseInt(countRecords),
recordsFiltered: parseInt(countRecords)
});
}, 50); // scroll request size
}, //end of ajax call for controller
scrollY: 500, // div height
scrollX: true,
scroller: {
loadingIndicator: true
},
footerCallback: function (row, data, start, end, display) {
var api = this.api()
var json = api.ajax.json();
$(api.column(17).footer()).html(totalOfDiscount);
var api = this.api(), data;
// Remove the formatting to get integer data for summation
var intVal = function (i) {
return typeof i === 'string' ?
i.replace(/[\$,]/g, '') * 1 :
typeof i === 'number' ?
i : 0;
};
// Total over all pages
total = api
.column(17)
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
}, 0);
// Total over this page
pageTotal = api
.column(17, { page: 'current' })
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
}, 0);
//// Update footer
$(api.column(17).footer()).html('Total:' + totalOfDiscount);
}
});
проблемная область:
data.res[i].TransDate and data.res[i].ExpirationDate
идут в этом формате: 2020-01-31T00:00:00+05:30
.
Моя догадка из-за этих строк кода:
{
targets: [9,13],
render:$.fn.dataTable.render.moment()
}
Однако я хочу данные в формате ГГГГ-ММ-ДД или ДД-ММ-ГГГГ. Данные JSON, поступающие от метода действия, выглядят примерно так: Date(1615660200000)
Я прошел через форум DataTables, и многие посты Аллана (администратора сайта) перепробовали множество комбинаций, но безрезультатно. Мое понимание jQuery DataTable довольно новичок.