数据表按引用排序(带点)

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。

以上是关于数据表按引用排序(带点)的主要内容,如果未能解决你的问题,请参考以下文章

rank怎么用

freemarker - 带点的变量名

论文的参考文献排列顺序怎么排列啊?

无法使用数据表停止初始排序

mongoose-paginate 按引用文档排序

mongoose-paginate 按引用文档排序