jquery 数据表如何呈现和排序 mm-dd-yyyy

jquery datatables how to render and sort mm-dd-yyyy

我已经实现了数据表,并且已经尝试了几个小时来让数据正确显示和排序,但无济于事。我希望将数据显示为 mm-dd-yy。我可以使用 mm/dd/yy,但我有 2000 年前的日期,所以 99 的排序最高而不是最低。我将数据更改为发送 4 位数年份,但不想显示它。我试过这个:

$('#shiporderinfotable').dataTable( {
    "data": dataSet,
    "columns": [
        { "title": "Store", "class": "dr" },
        { "title": "Order#", "class": "dr" },
        { "title": "Cust PO#", "class": "dl" },
        { "title": "Order Date", "class": "dr" },
        { "title": "Invoice", "class": "dr" },
        { "title": "Inv Date", "class": "dr" },
        { "title": "Qty<br>Ord", "class": "dr" },
        { "title": "Qty<br>Shp", "class": "dr" },
        { "title": "Qty<br>Open", "class": "dr" },
        { "title": "Qty<br>Pick", "class": "dr" },
        { "title": "Pick<br>Date", "class": "dr" },
        { "title": "Items", "class": "dl" }
    ],
    "columnDefs": [ 
        {

            "render": function ( data, type, row ) {
                return data.substr(0,2)+'-'+data.substr(3,2)+'-'+data.substr(8,2);
            },
            "targets": [3,5,10]
        }]
} );

如果我去掉 render 语句,它就没问题了。一旦我添加了渲染语句,它就会进行左对齐字符排序。有没有办法只为显示而不是排序进行渲染?

markpsmith 的上述评论回答了问题。我添加了这个答案以便能够关闭它。我想出了下面列出的代码。我加载了 3 个额外的日期数据列,格式为 mm/dd/yyyy,并将列出的日期列留空。然后我将排序设置为使用这些列并呈现列 mm-dd-yy 的显示。

 $.ajax({url:arg,success:function(result){
$('#shiporderinfo').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="shiporderinfotable" width="100%"></table>' );
var dataSet = eval(result);
$('#shiporderinfotable').dataTable( {
    "data": dataSet,
    "columns": [
        { "title": "Store", "class": "dr" },
        { "title": "Order#", "class": "dr" },
        { "title": "Cust PO#", "class": "dl" },
        { "title": "Order Date", "class": "dr", "iDataSort": 12 },
        { "title": "Invoice", "class": "dr" },
        { "title": "Inv Date", "class": "dr", "iDataSort": 13 },
        { "title": "Qty<br>Ord", "class": "dr" },
        { "title": "Qty<br>Shp", "class": "dr" },
        { "title": "Qty<br>Open", "class": "dr" },
        { "title": "Qty<br>Pick", "class": "dr" },
        { "title": "Pick<br>Date", "class": "dr", "iDataSort": 14 },
        { "title": "Items", "class": "dl" },
        { "title": "Order Date Sort", "visible": false },
        { "title": "Invoice Date Sort", "visible": false },
        { "title": "Pick Date Sort", "visible": false }
    ]
    ,"order": [[ 3, "desc" ]]
    ,"lengthMenu": [[10, 20, 50, 100, -1], [10, 20, 50, 100, "All"]]
    ,
    "columnDefs": [ 
        {
            "render": function ( data, type, row ) {
                tmp = row[12];
                if (tmp == '') {
                 return '';
                } else {
                 return tmp.substr(0,2)+'-'+tmp.substr(3,2)+'-'+tmp.substr(8,2);
                }
            },
            "targets": [3]
        },{
            "render": function ( data, type, row ) {
                tmp = row[13];
                if (tmp == '') {
                 return '';
                } else {
                 return tmp.substr(0,2)+'-'+tmp.substr(3,2)+'-'+tmp.substr(8,2);
                }
            },
            "targets": [5]
        },{
        "render": function ( data, type, row ) {
                tmp = row[14];
                if (tmp == '') {
                 return '';
                } else {
                 return tmp.substr(0,2)+'-'+tmp.substr(3,2)+'-'+tmp.substr(8,2);
                }
            },
            "targets": [10]
        }]
} );
$('.ajax-order-popup').magnificPopup({type: 'ajax',closeOnContentClick: true});

}});