为什么kendo Ui -grid日期没有正确排序?

时间:2016-08-11 12:36:34

标签: kendo-ui kendo-grid kendo-asp.net-mvc telerik-grid kendo-ui-grid

值为ReinsDepositAmount

enter image description here

**

输出

** enter image description here我最近在kendo ui grid中使用了一个应用程序日期排序。

在kendo网格中,列名称定义如下

ReinsDepositDate的传入值 - 月,日,年格式。 1991年8月23日

字段名称为ReinsDepositDate:     {       字段:“ReinsDepositDate”,键入:“date”,标题:“截止日期”,格式:“{0:M / d / yyyy}”,宽度:100,可过滤:{                     细胞: {                         运营商:“包含”
                        }                     }                 },

排序日期时,根据第一个值进行排序

  1. 1/12/1994
  2. 23/1/2015
  3. 13/1/1992
  4. 意味着在提升时我正在

    1. 1994年1月12日 2.13 / 1/1992
    2. 23/1/2015
    3. 所以我已经把模式模型

      我仍然得到相同的结果。

       schema: {
                      model: {
                          fields: {
                              ReinsDepositDate: { type: "date",format: "{0:dd/MM/yyyy}"}
                          }
                      }
                  },
      

      我见过许多小提琴演示,这里没有任何作用原因:

      Refrences: http://fiddle.jshell.net/NqrDS/light/ Kendo grid date column not formatting

      设计流程:

      设计流程是通过使用angular http服务从db到api获取值,并将响应分配给kendo网格中的数据源。当我用json文件做一个演示时,它的工作正常。但同样的事情在这里适用它意味着不工作。所以我去自定义javascript排序。列: [$ scope.grdPrmiumDepositCol, -

      kendo sortable属性中的自定义javascript将起到作用。 工作正常做这部分。

       { field: "ReinsDepositDate", format: "{0:MM/dd/yyyy}",type:"date",  sortable:{  compare: function (a, b) {
                                 var c = new Date(a.ReinsDepositDate);
                                  var d = new Date(b.ReinsDepositDate);
                                  return c - d;
                              }`
      
                          }}],
      

      我的问题是为什么我这样做,因为剑道给出了日期格式,当我尝试使用传输读取的示例演示时,json文件与kendo格式正常工作。仍然困惑。

2 个答案:

答案 0 :(得分:1)

根据提供的信息,不清楚是在客户端还是在服务器上执行排序。

如果Kendo UI DataSource在客户端上进行排序,则应以正确的格式提供日期值,以便Kendo UI将它们解析为JavaScript Date对象。可以解析多种不同的格式,但dd-MM-yyyy 其中之一。

这是一个例子,它说明了上述情况。您将注意到空行,其中尚未解析日期。

http://dojo.telerik.com/UcEXO/2

通常,建议使用普遍接受的标准序列化日期:

https://stackoverflow.com/a/15952652/3086237

如果在服务器上执行排序,那么Kendo UI与问题无关,您应该调试服务器端实现。

答案 1 :(得分:0)

您可以尝试从响应中解析日期。

http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#configuration-schema.parse

schema: {
    parse: function(response) {
      for (var i = 0; i < response.length; i++) {
        response[i].ReinsDepositDate = kendo.parseDate(response[i].ReinsDepositDate, "dd/MM/yyyy");
      }
      return response;
    }
  }

希望这有帮助。