1

我有一个带有 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 示例)匹配项目?

4

2 回答 2

0
  • 当您使用格式时,您将时刻转换为字符串,请省略该部分。
  • 没有很好的记录,但显然 sortFn 需要返回 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;
                

检查工作小提琴

于 2016-04-01T13:29:48.483 回答
0

如果它们相同,排序函数需要返回 1 或 -1 或 0。您只返回 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;}
于 2016-04-01T13:30:47.597 回答