数据表的显式排序
Explicit Sorting for datatables
我的数据表中有一列包含状态信息(即非常好、好、好的、差、非常差),我想按状态排序,而不是按字母顺序排序。我该怎么做?
我刚刚编了这个属性,但是有这样的东西吗?
$("#myTable").DataTable({
"sortArray": ['very good', 'good', 'ok', 'bad', 'very bad']
});
我确实查看了数据表文档并找到了 custom sorting,但据我所知,它使用字母和数字等类型。
编辑:我不能使用 HTML5 因为它必须与 IE9 兼容。
您可以为每个状态分配一个数值(即 1 -> 非常好,2 -> 好等),然后使用 DataTables 的列呈现功能将您的数值映射回文本状态。
解决方案 1
您可以使用 columnDefs to target a specific column using zero-based index in targets
option and columnDefs.render to return numerical value during sorting (type === 'sort'
). jQuery helper method $.inArray() 用于 return 基于提供的值的数组索引。
$('#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
替代解决方案是使用 data-
属性,如 HTML5 data-* attributes 示例所示。
如果您有静态 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>
我的数据表中有一列包含状态信息(即非常好、好、好的、差、非常差),我想按状态排序,而不是按字母顺序排序。我该怎么做?
我刚刚编了这个属性,但是有这样的东西吗?
$("#myTable").DataTable({
"sortArray": ['very good', 'good', 'ok', 'bad', 'very bad']
});
我确实查看了数据表文档并找到了 custom sorting,但据我所知,它使用字母和数字等类型。
编辑:我不能使用 HTML5 因为它必须与 IE9 兼容。
您可以为每个状态分配一个数值(即 1 -> 非常好,2 -> 好等),然后使用 DataTables 的列呈现功能将您的数值映射回文本状态。
解决方案 1
您可以使用 columnDefs to target a specific column using zero-based index in targets
option and columnDefs.render to return numerical value during sorting (type === 'sort'
). jQuery helper method $.inArray() 用于 return 基于提供的值的数组索引。
$('#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
替代解决方案是使用 data-
属性,如 HTML5 data-* attributes 示例所示。
如果您有静态 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>