显式排序数据表

时间:2015-07-17 14:28:06

标签: javascript jquery sorting datatables

我的数据表中有一个包含状态信息的列(即非常好,好,好,坏,非常糟糕),我想按状态排序,而不是按字母顺序排序。我该怎么做?

我刚刚编造了这个属性,但有这样的东西吗?

$("#myTable").DataTable({
    "sortArray": ['very good', 'good', 'ok', 'bad', 'very bad']
});

我确实查看了数据表文档并找到了custom sorting,但据我所知,它使用了字母和数字等类型。

编辑:我不能使用HTML5,因为它必须与IE9兼容。

2 个答案:

答案 0 :(得分:1)

解决方案1 ​​

您可以使用columnDefstargets选项和columnDefs.render中使用从零开始的索引来定位特定列,以在排序期间返回数值(type === 'sort')。 jQuery帮助器方法$.inArray()用于根据提供的值返回数组索引。

$('#myTable').dataTable( {
    "columnDefs": [
        {
            "targets": 0,
            "render": function ( data, type, row, meta ) {
                if(type === 'sort'){
                   var values = ['very good', 'good', 'ok', 'bad', 'very bad'];
                   data = $.inArray(data, values);
                }

                return data;
            }
        }
    ]
} );

解决方案2

替代解决方案是使用HTML5 data-* attributes示例中显示的data-属性。

如果你有静态HTML数据,你可以创建如下所示的行,然后jQuery DataTables选择data-属性并使用它们进行搜索。

<tr>
    <td>T. Nixon</td>
    <td>System Architect</td>
    <td data-order="1">very good</td>
</tr>
<tr>
    <td>T. Nixon</td>
    <td>System Architect</td>
    <td data-order="2">good</td>
</tr>

答案 1 :(得分:0)

您可以为每个状态指定一个数值(例如1 - >非常好,2 - &gt;良好等等),然后使用DataTables的列呈现功能将您的数值映射回a文字状态。

DataTables Column rendering