2016-08-08 16 views
0

У меня проблема с настраиваемым редактором сетки kendo. Я хочу использовать dateTimePicker в качестве моего редактора, когда я нажимаю кнопку редактирования на сетке кендо. Но когда я пытаюсь обычай моей сетки с DateTimePicker, всегда есть ошибка:Kendo Grid встроенное редактирование DateTime

Uncaught TypeError: e.indexOf is not a function ---------- kendo.custom.min.js:1 

Вот простой исходный код:

var data = [ 
      {"id":1, "dateTime": 1420947900000}, 
      {"id":2, "dateTime": 1421034300000}, 
      {"id":3, "dateTime": 1421036100000}, 
      ]; 
$("#grid").kendoGrid({ 
    selectable: true, 
    editable: "inline", 
    columns: [ 
     { 
      field: "dateTime", 
      title: "<center>Date Time</center>", 
      width: "200px", 
      format: "{0:MM/dd/yyyy hh:mm}", 
      template: "#= kendo.toString(new Date(parseInt(dateTime)), 'MM/dd/yyyy hh:mm') #", 
      editor: dateTimeEditor2 
     }, 
     { command: ["edit", "destroy"], title: "&nbsp;", width: "170px" } 
    ], 
    dataSource: { 
     transport: { 
      read: function(e) { 
       e.success(data); 
      }, 
      update: function(e) { 
       //my update Function 
     alert(e.dateTime); 
      }, 
      autosync: true 
     }, 
     schema: { 
      model: { 
       id: "id", 
       fields: { 
        dateTime: { type: "datetime" }, 
       } 
      } 
     } 
    } 
}); 
function dateTimeEditor2(container, options) { 
    $('<input data-text-field="' + options.field + '" data-value-field="' + options.field 
      + '" data-bind="value:' + options.field + '" />') 
      .appendTo(container) 
      .kendoDateTimePicker({ 
       format:"MM/dd/yyyy hh:mm", 
       value: new Date(options.model.dateTime) 
      }); 
} 

Или вы можете проверить его на этой link

I уже проверять его на многих разных источниках, например:

  1. Reference 1
  2. Reference 2

ответ

1

Ваше поле "DATETIME" является числовым, но вы используете "DATETIME" типа для опций сетки. И в функции редактора, используя атрибут «привязка данных» на пользовательский вход, тормозит коды kendoUI, потому что он ожидает какой-то текст даты, который я думаю.

Я изменил код, обновляя типы полей до числовых и удаляя входные атрибуты. Ошибка исчезла. Вам необходимо реализовать DateTimePicker с настраиваемыми событиями, чтобы обновить числовое значение элемента данных grid, когда значение редактора изменилось. Или, возможно, при нажатии кнопка «Обновить» нажата в вашем примере я предполагаю, путем анализа значения даты и времени в целое и установка сетки DataItem ..

http://dojo.telerik.com/ecICE

Extra Примечание: Я хотел бы также рассмотреть вопрос о манипулировании моего источника данных массива, чтобы изменить эти числовые значения значениям JS DateTime перед привязкой к сетке. Вероятно, это будет более простое решение.

-