我的数据表中有一个包含状态信息的列(即非常好,好,好,坏,非常糟糕),我想按状态排序,而不是按字母顺序排序。我该怎么做?
我刚刚编造了这个属性,但有这样的东西吗?
$("#myTable").DataTable({
"sortArray": ['very good', 'good', 'ok', 'bad', 'very bad']
});
我确实查看了数据表文档并找到了custom sorting,但据我所知,它使用了字母和数字等类型。
编辑:我不能使用HTML5,因为它必须与IE9兼容。
答案 0 :(得分:1)
解决方案1
您可以使用columnDefs在targets
选项和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文字状态。