【问题标题】:Sorting Empty values always to top in Datatables在数据表中始终将空值排序到顶部
【发布时间】:2018-12-11 14:07:27
【问题描述】:

我试图找到一种方法,在使用数据表时始终将空单元格排序到顶部而不是底部。

我找到了一些方法可以始终将空单元格强制到底部,但我是数据表的新手,我不确定如何让它始终将空单元格排序到顶部。

我正在尝试在使用数据表时始终将空/​​空单元格排序到顶部而不是底部的方法。

例如如果我的数据如下

| ACCOUNT # |
|-----------|
|           |
| 035721576 |
|           |
| 035721577 |

它也会排序

| ACCOUNT # |
|-----------|
|           |
|           |
| 035721576 |
| 035721577 |

| ACCOUNT # |
|-----------|
|           |
|           |
| 035721577 |
| 035721576 |

【问题讨论】:

  • 我认为这篇文章与您的问题有关:stackoverflow.com/questions/29829205/… 他想要底部的空字段,但只需将升序更改为降序即可。希望这会有所帮助。
  • 在这两种情况下都将 null 强制到底部...我想对其进行排序,所以无论顶部是什么 null。

标签: javascript datatables


【解决方案1】:

您可以创建一个排序插件,如果该值未定义、为空、null 则返回 Number.*_INFINITY(当值评估返回 false 时):

var __emptyOnTop = function(a, b, high) {
  a = a || high;
  b = b || high;
  return ((a < b) ? -1 : ((a > b) ? 1 : 0));   
}
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
  "empty-on-top-asc": function (a, b) {
     return __emptyOnTop(a, b, Number.NEGATIVE_INFINITY)
  },
  "empty-on-top-desc": function (a, b) {
     return __emptyOnTop(a, b, Number.POSITIVE_INFINITY) * -1
  }
});

用法

var table = $('#example').DataTable({
  columnDefs: [
    { targets: 0, type: 'empty-on-top' }
  ]
}) 

演示 -> http://jsfiddle.net/y4ewqLmu/

将来,当您遇到此类问题时,请访问 https://datatables.net/plug-ins/sorting/ 并查找类似的用例。我刚刚获取了any-number 插件(由我开发,现在是核心的一部分)并进行了一些修改。

【讨论】:

    猜你喜欢
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多