Telerik RadScheduler отменяет перемещение встречи после ошибки проверки на стороне сервера
Я использую Telerik RadScheduler с привязкой к веб-сервису.
Когда я перетаскиваю встречу в другой временной интервал, я выполняю некоторую проверку на стороне клиента в OnClientAppointmentMoveEnd
и если это удастся, я установлю args.set_cancel(true);
Затем он попадает в мой метод веб-службы UpdateAppointment
,
Мой серверный код в этом вызове веб-службы затем выполняет дополнительную проверку на основе запроса к базе данных.
Мой вопрос - если эта проверка на стороне сервера не удалась, как я могу получить назначение на стороне клиента, чтобы вернуться туда, где оно возникло? Я могу поймать статус или сообщение в OnClientRequestFailed
но есть ли способ отменить событие перемещения после вызова веб-службы или перенести встречу назад?
1 ответ
Я только нашел свой ответ - После UpdateAppointment
веб-метод вызывается, тогда планировщик вызовет GetAppointments
опять же, поэтому правильные данные должны быть перезагружены на клиенте.
Для тех, кто может найти это полезным:
- Не выбрасывайте Исключение в UpdateAppointment для ошибки проверки. Я установил сообщение об ошибке в сеансе (не смог найти способ передать его обратно из провайдера в веб-метод)
- Я создал класс
MySchedulerResult
наследование отSchedulerOperationResult<AppointmentData>
, сErrorMessage
имущество. - мой
UpdateAppointment
Веб-метод возвращает этот MySchedulerResult и назначает встречи, возвращаемые изProvider.UpdateAppointment
к этому. Он проверяет сеанс, чтобы увидеть, произошла ли ошибка проверки, и устанавливаетErrorMessage
свойство к этому значению, если найдено. - мой
OnClientRequestSuccess
Метод на стороне клиента распаковывает этот результат и выдает сообщение об ошибке, если найдено. Между тем, данные о встрече перезагружаются и должны иметь измененную встречу в исходном временном интервале.
Я нашел больше информации о классе результатов планировщика здесь: http://docs.telerik.com/devtools/aspnet-ajax/controls/scheduler/web-service-binding/returning-extra-data-from-the-web-service