在我的一个基于 PHP 的项目中,我需要使用自定义条件或自定义顺序而不是 DataTable 的 默认顺序(升序或降序)来对列 进行排序。
我有四种状态:紧急、高、中、低
我想要的自定义顺序是:
在上升期间它将是:低、中、高、紧急
在下降过程中它将是:紧急、高、中、低
因此,在搜索 DataTables 后,我找到了一个在 DataTables 中运行良好的解决方案。这是[稍微定制以满足我的标准]:
$.fn.dataTable.ext.type.order['ticket-priority-pre'] = function ( d ) {
switch ( d ) {
case 'Low' : return 1;
case 'Medium' : return 2;
case 'High' : return 3;
case 'Urgent' : return 4;
}
return 0;
};
$( document ).ready( function() {
//initializing datatables
$('#ticketList').DataTable({
"paging" : false,
"info" : false,
"searching" : false,
"order": [[ 0, "desc" ]],
"columnDefs": [ {
"type": "ticket-priority",
"targets": -1
} ]
});
});
但是我得到的顺序是:
升序:高、低、中、紧急
降序:紧急、中等、低、高
由于某些未知原因,Low 和 High 执行了错误的顺序。
谁能帮我解决代码中的问题或提供解决方案?
- 谢谢
最佳答案
阅读下一个例子:
https://datatables.net/examples/plug-ins/sorting_auto.html
我认为,您需要这样做:
$.fn.dataTable.ext.type.detect.unshift(
function ( d ) {
return (d === 'Low' || d === 'Medium' || d === 'High' || d === 'Urgent') ?
'ticket-priority' :
null;
}
);
$.fn.dataTable.ext.type.order['ticket-priority-pre'] = function ( d ) {
switch ( d ) {
case 'Low' : return 1;
case 'Medium' : return 2;
case 'High' : return 3;
case 'Urgent' : return 4;
}
return 0;
};
$( document ).ready( function()
{
// Initializing datatables.
$('#ticketList').DataTable({
"paging" : false,
"info" : false,
"searching" : false,
"order" : [[ 0, "desc" ]],
"columnDefs": [ {
"type": "ticket-priority",
"targets": -1
} ]
});
});
关于javascript - DataTables - 如何使用自定义条件对列进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52934571/