如何在KoGrid中实现DateTime排序

How to implement DateTime sorting in the KoGrid

我有一个带有 DateTime 行的 KoGrid。我希望能够对这一行进行排序。我尝试实现自定义 sortFn 函数来比较 DateTimes 而不是字符串。但它不能正常工作(3/03/2017 02:20 PM 高于 31/04/2016 02:20 PM)

  sortFn:function (a, b) {
           var a1 = moment(a,"'DD/MM/YYYY hh:mm A").format("YYYY-MM-DD HH:mm");
           var b1 = moment(b,"'DD/MM/YYYY hh:mm A").format("YYYY-MM-DD HH:mm");
                return (a1 > b1);
                }

https://jsfiddle.net/L681pgny/

我该如何解决?以及如何调试 sortFn 函数?

附加问题:排序功能现在只对当前页面有效。是否可以对所有页面中的所有项目进行排序并在页面上显示 5(对于上面的 jsfiddle 示例)匹配项目?

  • 当您使用 format 时,您会将 moment 转换为字符串,请省略该部分。
  • 没有很好的记录,但显然 sortFn 需要 return 1 或 -1 才能正常工作

这是您的 sortFn 应包含的内容

var a1 = moment(a,"'DD/MM/YYYY hh:mm A");
var b1 = moment(b,"'DD/MM/YYYY hh:mm A");

return a1>b1?1:-1;
                

检查工作fiddle

排序函数需要 return 1 或 -1 或 0(如果它们相同)。您只是 returning 1 和 0。

sortFn:function (a, b) {
  var a1 = moment(a,"'DD/MM/YYYY hh:mm A");
  var b1 = moment(b,"'DD/MM/YYYY hh:mm A");
  return a1.isBefore(b1) ? 1 : -1;}