Hello,
I am currently implementing the RadScheduler control where I have already replaced the AppointmentEditDialog and the EditRecurrenceDialog.
Could you point me in the right direction how to replace the message-dialog when you move/resize a single item of a recurrence appointment?
(See attached image)
Best regards
Patrick Vossen
2 Answers, 1 is accepted
0
Hello, Patrick,
The AppointmentDraggingBehavior shows the message box illustrated in the attached screenshot. If you need to customize it, it is necessary to create a derivative of the AppointmentDraggingBehavior and override its ValidateOccurrenceDropTarget method. You can find below the default implementation of the method and how to replace the default drag drop behavior:
The RadMessageBox shown at the bottom of the method is the one you need. Feel free to replace it with any dialog that you have constructed.
I hope this information helps. If you need any further assistance please don't hesitate to contact me.
Regards,
Dess | Tech Support Engineer, Sr.
Progress Telerik
The AppointmentDraggingBehavior shows the message box illustrated in the attached screenshot. If you need to customize it, it is necessary to create a derivative of the AppointmentDraggingBehavior and override its ValidateOccurrenceDropTarget method. You can find below the default implementation of the method and how to replace the default drag drop behavior:
public RadForm1(){ InitializeComponent(); this.radScheduler1.Appointments.Add(new Appointment(DateTime.Now, TimeSpan.FromHours(1), "Test")); radScheduler1.Appointments[0].RecurrenceRule = new HourlyRecurrenceRule(DateTime.Now, 3, 4); this.radScheduler1.SchedulerElement.DragDropBehavior = new CustomAppointmentDraggingBehavior(this.radScheduler1.SchedulerElement);}public class CustomAppointmentDraggingBehavior : AppointmentDraggingBehavior{ public CustomAppointmentDraggingBehavior(SchedulerVisualElement activeOwner) : base(activeOwner) { } protected override bool ValidateOccurrenceDropTarget(DateTime targetStartDate, DateTime targetEndDate, bool allDay) { IEvent dragged = this.ActiveFeedback.AssociatedAppointment; IEvent master = dragged.MasterEvent; if (master == null) { return true; } bool isException = master.Exceptions.Contains(dragged); DateTime originalOccurrenceDate = (dragged.RecurrenceId ?? dragged.Start); foreach (IEvent occurrence in OccurrenceEnumerator.GetOccurrences(master, this.Scheduler.ActiveView.StartDate, this.Scheduler.ActiveView.EndDate.AddDays(1), false)) { if (occurrence.Start != originalOccurrenceDate && occurrence.Start.Date == targetStartDate.Date && !(master.RecurrenceRule is HourlyRecurrenceRule) && ! (master.RecurrenceRule is MinutelyRecurrenceRule)) { if (this.ShowOccurrenceValidationMessages) { RadMessageBox.SetThemeName(this.Scheduler.ThemeName); RadMessageBox.Show(RadSchedulerLocalizationProvider.CurrentProvider.GetLocalizedString( RadSchedulerStringId.RecurrenceDragDropValidationSameDateText), String.Empty, MessageBoxButtons.OK, RadMessageIcon.Exclamation); } return false; } else if ( ((originalOccurrenceDate < occurrence.Start && occurrence.Start < targetStartDate) || (originalOccurrenceDate > occurrence.Start && occurrence.Start > targetStartDate))) { if (this.ShowOccurrenceValidationMessages) { RadMessageBox.SetThemeName(this.Scheduler.ThemeName); RadMessageBox.Show(RadSchedulerLocalizationProvider.CurrentProvider.GetLocalizedString( RadSchedulerStringId.RecurrenceDragDropValidationSkipOccurrenceText), String.Empty, MessageBoxButtons.OK, RadMessageIcon.Exclamation); } return false; } } foreach (IEvent occurrence in master.Exceptions) { if (occurrence == dragged) { continue; } if (occurrence.Start != originalOccurrenceDate && occurrence.Start.Date == targetStartDate.Date && !(master.RecurrenceRule is HourlyRecurrenceRule) && ! (master.RecurrenceRule is MinutelyRecurrenceRule)) { if (this.ShowOccurrenceValidationMessages) { RadMessageBox.SetThemeName(this.Scheduler.ThemeName); RadMessageBox.Show(RadSchedulerLocalizationProvider.CurrentProvider.GetLocalizedString( RadSchedulerStringId.RecurrenceDragDropValidationSameDateText), String.Empty, MessageBoxButtons.OK, RadMessageIcon.Exclamation); } return false; } else if ( ((originalOccurrenceDate < occurrence.Start && occurrence.Start < targetStartDate) || (originalOccurrenceDate > occurrence.Start && occurrence.Start > targetStartDate))) { if (this.ShowOccurrenceValidationMessages) { RadMessageBox.SetThemeName(this.Scheduler.ThemeName); RadMessageBox.Show(RadSchedulerLocalizationProvider.CurrentProvider.GetLocalizedString( RadSchedulerStringId.RecurrenceDragDropValidationSkipOccurrenceText), String.Empty, MessageBoxButtons.OK, RadMessageIcon.Exclamation); } return false; } } if (isException || !this.ShowCreateExceptionDialog) { return true; } RadMessageBox.SetThemeName(this.Scheduler.ThemeName); return RadMessageBox.Show( RadSchedulerLocalizationProvider.CurrentProvider.GetLocalizedString( RadSchedulerStringId.RecurrenceDragDropCreateExceptionDialogText), String.Empty, MessageBoxButtons.YesNo, RadMessageIcon.Question) == DialogResult.Yes; }}The RadMessageBox shown at the bottom of the method is the one you need. Feel free to replace it with any dialog that you have constructed.
I hope this information helps. If you need any further assistance please don't hesitate to contact me.
Regards,
Dess | Tech Support Engineer, Sr.
Progress Telerik
Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
0
Patrick
Top achievements
Rank 1
answered on 24 Jul 2019, 08:33 AM
Hi Dess,
Thanks 4 the solution.
I am going to apply the mentioned solution.
Grtz Patrick
