如何在KoGrid中实现DateTime排序

时间:2016-03-31 21:09:40

标签: knockout.js kogrid

我有一个带有DateTime行的KoGrid。而且我希望能够对这一行进行排序。我尝试实现自定义sortFn函数来比较DateTimes而不是字符串。但它无法正常工作(3/03/2017 02:20 PM高于2016年4月31日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示例)匹配的项目?

2 个答案:

答案 0 :(得分: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;
                

检查工作fiddle

答案 1 :(得分:0)

sort函数需要返回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;}