我必须按日期列对值进行排序。我正在使用jQuery Datatable,这里排序不按日期提交。
var settings = {
ajax: {
url: url.toString(),
type: "POST",
beforeSend:function() {
showSpinner(".spinnerDiv", true);
},
complete:function() {
showSpinner(".spinnerDiv", false);
},
data: function ( d ) {
d.selectedButtonName = $("#selected_button_name").val();
d.salesDaysToDisplay = $("#salesDaysToDisplay").val();
d.selectedContributorUserId = $("#selected_contributor_userid").val();
}
},
order: [[12,"desc"]],
pageLength: 100,
columns : [
{ data: "cashOutId" },
{ data: "thumbnail" },
{ data: "thumbnail" },
{ data: "invoiceNo" },
{ data: "saleDate" },
{ data: "salePaymentStatus" },
{ data: "docId" },
{ data: "description" },
{ data: "customerName" },
{ data: "intlPaymentAmount" },
{ data: "exchangeRate" },
{ data: "totalAmount" }
],
columnDefs: [
{
"render": function (data, type, row) {
var result = "";
var cashOutAmount = row.cashOutAmount.replace("$", "").replace(",", "");
var disableCashOut = (Math.sign(cashOutAmount) == -1) ? "disabled='disabled' checked" : "";
if (row.paymentStatus == 'Unpaid' && row.saleDate && !row.isRedOrBlue) {
result = "<input type='checkbox' class='cashOutCb' "+disableCashOut+" value='" + data + "' data-cashoutamount='" + cashOutAmount + "'/>";
}
return result;
},
"targets": [0]
},
{
"render": function (data, type, row) {
return "<image class='tinyThumb' src='" + data + "'/>";
},
"targets": [1]
},
{
"render": function (data, type, row) {
return "<a href='" + data + "'>"+data+"</a>";
},
"targets": [2]
},
{
"sType": "royaltiesTrxDateTime",
"targets" : [4]
},
{
"render": function (data, type, row, meta) {
var shortDescription = data, len = data.length, result = "", rowIndex = "fullDescription"+meta.row;
if (len > 75) {
shortDescription = shortDescription.substring(0, 75);
result = '<div><span id="'+rowIndex+'" style="display:none;">'+data+' <a class="showLess" href="javascript:void(0);">less</a></span><span class="shortDescription">'+shortDescription+' ... <a data-id='+meta.row+' href="javascript:void(0);" class="showMore">more</a></span></div>';
} else {
result = "<div>"+shortDescription+"</div>";
}
return result;
},
"targets": [7]
},
{ "class": "dtRightAlign", "targets": [11, 13, 14, 15] },
{ "class": "hideInDatatable", "targets": [2, 9, 10, 17, 18, 19, 20, 22, 23, 24, 25, 26] },
{ targets: '_all', sortable: true, searchable: true }
],
"footerCallback": function () {
var api = this.api(), columns = [11, 13, 15];
var colspanA = [9, 1, 1], colspanB = [1, 1, 2];
$('tfoot tr').html("");
var fclass = "dtRightAlign";
for (var i = 0; i < columns.length; i++) {
var pageTotal = api.column(columns[i], {filter: 'applied', page: 'current'}).data().sum();
var total = api.column(columns[i], { filter: 'applied' }).data().sum();
if (pageTotal != 0 || total != 0)
$('tfoot tr').append('<td colspan="'+colspanA[i]+'" class="'+fclass+'"> $' + parseFloat(total).toFixed(2) + '</td><td colspan="'+colspanB[i]+'"></td>');
}
},
dom: 'T<"clear">lfrtip',
"oTableTools": {
"sSwfPath":'<%=request.getContextPath()+"/js/copy_csv_xls_pdf.swf"%>',
"aButtons": [
{
"sExtends": "xls",
"sFileName" : "Contributor Report-"+timeStamp+".csv",
"sTitle" : "Contributor Report",
"mColumns": [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],
"sButtonText": "Create Excel Report",
"aButtons":["xls"]
}
],
}
};
dataTable = $('#purchase-table').DataTable(settings);
对于日期排序,我使用以下方法。
jQuery.fn.dataTableExt.oSort["royaltiesTrxDateTime-desc"] = function (x, y) {
var dateStr1 = x, dateStr2 = y;
var d1 = moment(dateStr1.trim(), 'D-MMM-YYYY HH:mm', true).format();
var d2 = moment(dateStr2.trim(), 'D-MMM-YYYY HH:mm', true).format();
return moment(d1).isAfter(moment(d2)) ? -1 : 1;
};
jQuery.fn.dataTableExt.oSort["royaltiesTrxDateTime-asc"] = function (x, y) {
return jQuery.fn.dataTableExt.oSort["royaltiesTrxDateTime-desc"](y, x);
}
上面的jQuery函数在其他地方工作正常,这里工作不正常。提前谢谢。