Почему дата в kendo Ui -grid не сортируется должным образом?

значение - ReinsDepositAmount

введите описание изображения здесь

**

вывод

**

введите описание изображения здесь

Недавно я заполучил одну из сортировок по дате приложения в сетке пользовательского интерфейса кендо.

В сетке кендо имя столбца определяется следующим образом

Входящее значение в ReinsDepositDate - формат месяца, числа, года. 23.08.1991

Имя поля - ReinsDepositDate:

{
    field: "ReinsDepositDate", type: "date", title: "Due Date",format: "{0:M/d/yyyy}", width: 100, filterable: {
              cell: {
                   operator: "contains"  
                    }
            }
},

При сортировке даты ее сортировка по первым значениям.

  1. 1/12/1994
  2. 23/1/2015
  3. 13/1/1992

означает, что при подъеме я получаю

  1. 1/12/1994
  2. 13/1/1992
  3. 23/1/2015

Итак, я поместил модель схемы

тем не менее, я получаю тот же результат.

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

Я видел много демонстраций скрипок, здесь ничего не работает, почему:

Ссылки: http://fiddle.jshell.net/NqrDS/light/ Столбец даты сетки Kendo не форматируется

Поток дизайна:

Процесс проектирования заключается в использовании службы angular Http, чтобы получить значение из БД через API и назначить ответ источнику данных в сетке кендо. когда я делаю демонстрацию с файлами JSON, он работает нормально. Но то же самое применимо и здесь, значит не работает. поэтому я перешел к пользовательскому javascript для сортировки. столбцы: [$ scope.grdPrmiumDepositCol, -

Пользовательский javascript в атрибуте сортировки kendo сделает свое дело. работает нормально сделать эту часть.

 { 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, работающим нормально с форматом кендо. Все еще в замешательстве.


person Mohamed Sahir    schedule 11.08.2016    source источник


Ответы (2)


На основании предоставленной информации неясно, выполняется ли сортировка на клиенте или на сервере.

Если сортировка выполняется на клиенте с помощью источника данных пользовательского интерфейса Kendo, тогда значения даты должны быть предоставлены в правильном формате, чтобы они были преобразованы в объекты даты JavaScript с помощью пользовательского интерфейса Kendo. Существует несколько различных форматов, которые можно анализировать, но dd-MM-yyyy не один из них.

Вот пример, демонстрирующий сказанное выше. Вы заметите пустую строку, в которой дата не была проанализирована.

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

Обычно рекомендуется сериализовать даты, используя общепринятые стандарты:

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

Если сортировка выполняется на сервере, то пользовательский интерфейс Kendo не имеет отношения к проблеме, и вам следует отладить реализацию на стороне сервера.

person dimodi    schedule 11.08.2016
comment
Процесс проектирования заключается в использовании angular http-сервиса, чтобы получить значение от db через api и назначить ответ источнику данных в сетке kendo. когда я делаю демонстрацию с файлами json, он работает нормально. Но то же самое применить здесь означает не работать. поэтому я перешел к пользовательскому javascript для сортировки. столбцы: [$ scope.grdPrmiumDepositCol, - person Mohamed Sahir; 12.08.2016
comment
Я пробовал этот также другой формат, но ничего не работает, потому что я думаю, что он все еще принимает как строку, сортировка на стороне клиента. поэтому я поставил собственный 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; } ` - person Mohamed Sahir; 12.08.2016
comment
Да, ваш скриншот i.stack.imgur.com/WnR3b.png четко указывает на то, что даты на самом деле являются строками в источнике данных пользовательского интерфейса Kendo. Пока эта проблема не будет решена, встроенная сортировка не сможет работать правильно. Вы можете сравнить свою реализацию с примерами на сайте Kendo UI и в этом потоке. Я не думаю, что пользовательская сортировка - лучший подход, так как у вас будут те же проблемы с фильтрацией и редактированием. - person dimodi; 12.08.2016
comment
хорошо, круто, спасибо человеку за ответ. Еще одна путаница, как это работает в этой демонстрации как строка. Есть ли здесь какой-либо альтернативный подход? [ссылка] fiddle.jshell.net/NqrDS/light и [ссылка] jsfiddle.net/mackry/rbmaz - person Mohamed Sahir; 12.08.2016
comment
Даты в этих примерах успешно анализируются источником данных пользовательского интерфейса Kendo, поэтому объекты даты JavaScript создаются и используются в сетке. Кажется, я уже касался этой темы в своем ответе выше - person dimodi; 12.08.2016

Вы можете попробовать разобрать дату из ответа.

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;
    }
  }

Надеюсь это поможет.

person Jose Tuttu    schedule 13.08.2016