数据表按引用排序(带点)
Posted
技术标签:
【中文标题】数据表按引用排序(带点)【英文标题】:Datatable sort by references (with dot) 【发布时间】:2016-11-27 20:19:00 【问题描述】:我正在使用这个数据表:https://datatables.net 我的第一列包含这样的参考:1.1 或 1.2.1
所以我正在寻找一种按引用对表格进行排序的方法。 我正在考虑删除“。”并得到 11 或 121 这样更容易排序的数字。
但我不知道,如何从正确的列中删除点(不向用户显示任何内容)并在排序前添加“0”。
例如:如果数据是:1.1 1.1.1 1.2 1.2.1 -> 110、111、120、121
如果数据是:1.1 2.2.1.1 2.5 -> 1100、2211、2500
任何帮助将不胜感激:)
【问题讨论】:
【参考方案1】:您可以通过一个非常简单的基于类型的排序插件来实现您想要的。使用排序插件,您可以在排序之前对单元格的内容进行预处理,或者您可以实现自己的排序算法。在这里,您只需将“固定”数字传回,然后 dataTables 将按数字排序:
jQuery.extend( jQuery.fn.dataTableExt.oSort,
"reference-pre": function ( ref )
ref = ref.replace(/\./g, '') //remove dots
while (ref.length < 4) ref += '0' //add 0 until length 4
return parseInt(ref) //return as number
)
用法:
columnDefs : [
targets: 0, type: 'reference'
]
演示 -> http://jsfiddle.net/vc59bxww/
【讨论】:
它工作得很好,谢谢。但我忘了说数字包含在输入中......比如: @Snooze,这应该是明智的,使用类似ref = $(ref).val().replace(/\./g, '')
,【参考方案2】:
我就是这样用的
$(document).ready(function()
jQuery.extend( jQuery.fn.dataTableExt.oSort,
"formatted-num-pre": function ( a )
a = (a === "-" || a === "") ? 0 : a.replace( '.', "" );
return parseFloat( a );
,
"formatted-num-asc": function ( a, b )
return a - b;
,
"formatted-num-desc": function ( a, b )
return b - a;
);
$('#myTable').dataTable(
columnDefs: [
type: 'formatted-num', targets: 5
]
);
);
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于数据表按引用排序(带点)的主要内容,如果未能解决你的问题,请参考以下文章