События Kendo Scheduler исчезают после отмены редактирования

Я установил виджет Kendo Scheduler, используя Kendo Web GPL версии 2013.3.1119.

В основном это работает нормально, поскольку события извлекаются из удаленного SchedulerDataSource и правильно отображаются в календаре со связанным с ними ресурсом.

Проблема в том, что когда я дважды щелкаю событие, отображается всплывающий редактор, содержащий правильные данные, но если я нажимаю «Отмена» или «X», событие удаляется из календаря.

Ошибок нет, событие просто исчезает.

Любые идеи, что может быть причиной этого?


person Mat    schedule 24.01.2014    source источник


Ответы (3)


Я думаю, что нашел проблему. Конфигурация SchedulerDataSource немного нелогична.

В моей базе данных идентификатор событий хранится как id, но планировщику требуется taskId, поэтому в схеме это поле определяется следующим образом:

taskId: { from: 'id', type: 'number' }

но я не знал, что вам также нужно определить модель id как taskId, а не то, что на самом деле возвращает сервер.

Таким образом, полная схема SchedulerDataSource выглядит так:

schema: {
            data: 'data',
            total: 'total',
            model: {
                id: 'taskId',
                fields: {
                    taskId: { from: 'id', type: 'number' },
                    title: { from: 'title', defaultValue: 'No title', validation: { required: true } },
                    start: { type: 'date', from: 'start' },
                    end: { type: 'date', from: 'end' },
                    description: { from: 'description' },
                    ownerId: { from: 'employee_id' },
                    isAllDay: { type: 'boolean', from: "allDay" },
                    type_id: { type: 'number' }
                }
            }
        }

Просто из интереса, кто-нибудь знает, что вы можете определить «псевдонимы» полей, используя from: 'server-field' в обычном источнике данных Kendo? Может быть полезно.

person Mat    schedule 24.01.2014
comment
Это решило проблему и для меня, спасибо, что опубликовали свое решение. - person Scott; 13.10.2014
comment
Я не вижу, какая разница в использовании строки taskId. Я нашел дополнительную информацию здесь: telerik.com/forums/ - person Patrick J Collins; 11.02.2015
comment
Большое спасибо за публикацию этого. Наверное, сэкономил мне кучу времени. - person Chris; 29.03.2016

Проблема, которая у меня была. А причина этого "глюка" была в том, что я неправильно настроил модель. В моем случае все идентификаторы для всех событий были одинаковыми. Поэтому дважды проверяйте идентификаторы событий на уникальность.

Пример синтаксиса Razor:

@Html.Kendo().Scheduler<EventsViewModel>()
   .Name("scheduleTimes")
   .Timezone("Etc/UTC")
   .Views(views => views.WeekView())
   .DataSource(d => d
      .Model(m =>
      {
         m.Id(f => f.TimeId); //!!! TimeID should be unique
         m.Field(f => f.Title).DefaultValue(" ");
         m.Field(f => f.Start).Editable(true);
         m.Field(f => f.End).Editable(true);
      }
    )
  )
)
person Vitalii Bratok    schedule 19.11.2015

Мне тоже пришлось обновить это внутри объекта Kendo Scheduler:

 $("#schedulerID").getKendoScheduler().dataSource._pristineData

Когда я добавляю новую задачу в планировщик, новый объект добавляется в конец этого массива "_pristineData", но его поле "id" пусто. Если я отменю редактирование... Эти новые задачи исчезнут в браузере. Затем я обновляю объект Kendo Scheduler следующим образом:

 var length = $("schedulerID").getKendoScheduler().dataSource._pristineData.length;
 $("#schedulerID").getKendoScheduler().dataSource._pristineData[length - 1].id = id;

...и работает на меня.

person ajcarracedo    schedule 16.02.2015