在DataTable中排序特定数据

时间:2016-08-10 09:28:03

标签: javascript jquery html datatable

我现在被困在一个特定的数据格式,无法以普通方式订购。  示例:"Last Active" column ordered

我正在尝试使用html-attribute数据顺序

<td data-order="1447147318">8 months, 4 weeks</td>
<td></td>
<td></td>
<td data-order="1460026800">Apr 07 2016 13:00:00 </td>
<td data-order="1460026800">Apr 07 2016 13:00:00</td>

但是这个没有用。它仍按字母顺序排序。 &#34;最后活跃&#34;通过当前时间戳减去给定时间戳来计算数据。 我找到了一些代码来排除空数据单元的排序,这也是必要的。

jQuery.extend(jQuery.fn.dataTableExt.oSort, {
    "non-empty-string-asc": function (str1, str2) {
        if (str1 == "-")
            return 1;
        if (str2 == "-")
            return -1;
        return ((str1 < str2) ? -1 : ((str1 > str2) ? 1 : 0));
    },

    "non-empty-string-desc": function (str1, str2) {
        if (str1 == "-")
            return 1;
        if (str2 == "-")
            return -1;
        return ((str1 < str2) ? 1 : ((str1 > str2) ? -1 : 0));
    }
});

_j(function () {
    _j('#customerTable').DataTable({
        "columns": [
            {"data": "ID"},
            {"data": "Type"},
            {"data": "Customer"},
            {"data": "Act", "defaultContent": ""},
            {"data": "KND", "defaultContent": ""},
            {"data": "Last Active", "defaultContent": "Not logged yet", "type": "non-empty-string"},
            {"data": "Total", "defaultContent": ""},
            {"data": "Today", "defaultContent": ""},
            {"data": "Min Trial", "defaultContent": "", "type": "non-empty-string"},
            {"data": "Max Trial", "defaultContent": "", "type": "date"}
        ],
        "pageLength": 20,
        "lengthMenu": [10, 15, 20, 50, 100]
    });

});

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

你是如何比较字符串的?当我在排序中放置警报以查看str1和atr2的值时,我看到了文本值,例如“1个月,2个星期”和“1周,1天”。鉴于您正在进行字符串比较,以字母数字顺序返回并不意外。