DataTables 含序数后缀的第0列排序异常无法按数字顺序正确排列
问题根因
DataTables默认将包含º特殊符号的第0列识别为字符串类型,执行字典序排序:字符串比对逻辑中"10º"的首字符为1,会排在首字符为2的"2º"之前,和你需要的数字自然排序逻辑不符,所以会出现排序混乱的情况。
修复方案
不需要修改现有HTML和后端逻辑,仅调整DataTables的JS配置,给第0列指定排序时的取值规则即可,修改后的完整JS代码如下:
$(document).ready(function() { $('#example').DataTable( { "order": [[ 0, "desc" ]], "iDisplayLength": 50, "pagingType": "full_numbers", "responsive": true, // 新增列配置定义排序规则 "columnDefs": [ { "targets": 0, // 配置生效的列索引,第0列为ANO列 "render": function (data, type, row) { // 仅排序场景提取列文本前的数字作为排序依据 if (type === 'sort') { return parseInt(data.split('º')[0], 10); } // 显示、过滤等其他场景返回原始文本,不影响展示效果 return data; } } ] } ); } );
如果第1列BIÊNIO也需要按同样规则排序,只需要把targets的取值改为[0, 1]即可复用该逻辑。
内容的提问来源于stack exchange,提问作者Liandro Cos
相关产品推荐
相关产品推荐

