我正在使用DataTables jQuery plugin向我的表添加排序/排序。我必须在列中的某些数字中添加特殊字符*
。当我这样做时,排序/排序变得不正确。
正如您所看到的,korteri nr
上的第一个值是1然后是10等等。但是如果滚动
我已经尝试过这段代码来实现正确的排序,但它无济于事
$.fn.dataTableExt.oSort['custom-sorting-asc'] = function(a,b) {
a = escapeRegExp(a);
b = escapeRegExp(b);
return (a == b) ? 0 : (a > b) ? 1 : -1;
};
$.fn.dataTableExt.oSort['custom-sorting-desc'] = function(a,b) {
a = escapeRegExp(a);
b = escapeRegExp(b);
return (a == b) ? 0 : (a > b) ? -1 : 1; //reverse sorting
};
function escapeRegExp(string){
return string.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
}
$('.handp-table').DataTable( {
searching: false,
paging: false,
aoColumns: [
{ "sType": "custom-sorting" }, //custom sorting
null, //default sorting
null,
null,
null,
null,
null
]
} );
答案 0 :(得分:0)
问题是数据表正在将该列中的值解释为字符串,并按字母顺序对它们进行排序。
您可以尝试在相应的列中使用render函数:
aoColumns: [
{ fnRender: function(data,type,full){
if(type==='sort'){
return data;
}
return data+'*';
}
}
null, //default sorting
null,
null,
null,
null,
null
]
我假设您从服务器检索的数据是普通整数。如果是这种情况,那么Datatables将足够聪明地使用整数值进行排序,并使用带有连接*
的整数值(即:一个字符串)进行显示,过滤等。
顺便说一句,如果您使用的是Datatables 1.10+,我建议您使用新语法(更清晰,更易于使用)
答案 1 :(得分:0)
找到解决此问题的另一种方法。我改变了生成列内容的逻辑。我没有将*
添加到应该是此字符的每个数字,而是将类添加到此元素some_class
,然后使用CSS pseudo element :after
添加*
作为内容。 DataTables
不计算CSS,因此现在可以正常工作。
答案 2 :(得分:0)
这是一种更简单,更灵活的方法:您可以将属性td
添加到每个SET STAMP=%DATE:/=-% %TIME::=.%
SET SOURCE="C:\Users\PersonA\Documents\Test\Source"
SET DEST="C:\Users\PersonA\Documents\Test\Destination\%STAMP%"
REM Set Robocopy to only retry once after waiting 1 second; copy all
REM file attributes, security, etc; and create a log file in the
REM temp folder with the same name as the date.
robocopy %SOURCE% %DEST% /e /r:1 /w:1 /COPYALL /LOG:%TEMP%\%STAMP%.LOG
C:
CD \Users\PersonA\Documents\Test\Destination\
REM Recursively and quietly delete all directories older than
REM 3 days
FORFILES /S /D -3 /C "cmd /c IF @isdir == TRUE rd /S /Q @path"
标签中,然后将其用于订购。我在这里给出了更详细的答案:https://stackoverflow.com/a/51225222/8801891