2014-01-24 5 views
6

Я установил виджет Kendo Scheduler с помощью Kendo Web GPL версии 2013.3.1119.События Kendo Scheduler исчезают после отмены. Edit

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

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

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

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

ответ

10

Я думаю, что я нашел проблему. Конфигурация 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' в обычном кендо DataSource? Может быть полезно.

+0

Эта проблема решена, и для меня, спасибо за разместить свое решение. – Scott

+2

Я не вижу, какая разница с использованием строки «taskId». Я нашел дополнительную информацию здесь: http://www.telerik.com/forums/bug---cancel-button-in-event-edit-window-is-removing-event –

+0

Большое спасибо за публикацию этого. Наверное, спас мне тонну времени. – Chris

0

я тоже должен был обновить это в кендо Планировщик объекта:

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

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

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

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

0

The exect issue у меня был. И причиной этой «ошибки» было то, что я неправильно создал модель. В моем случае все идентификаторы для всех событий были одинаковыми. Поэтому дважды проверьте идентификаторы событий для уникальности.

Пример синтаксиса 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); 
     } 
    ) 
) 
) 
Смежные вопросы