By design, the month view in RadScheduler stacks the appointments for a certain day considering the start time of the appointments and their duration. Internally, it uses MonthViewEventsComparer which would be great to be replaceable somehow.
Add the possibility to specify given date as a holiday.
It is possible to schedule multiple appointments in the same time period. In some scenario's this should be avoided. When the agenda can change from outside the scheduler, sometimes conflics will apear when the resource is not visible on the scheduler. It would be nice to have a list of all the conflicted appointments
To reproduce: public Form1() { InitializeComponent(); for (int i = 0; i < 7; i++) { this.radScheduler1.Appointments.Add(new Appointment(DateTime.Now.AddHours(i),TimeSpan.FromHours(3),"App" + i)); } this.radScheduler1.AutoSizeAppointments = true; this.radScheduler1.ActiveViewType = SchedulerViewType.Month; SchedulerMonthView monthView = this.radScheduler1.GetMonthView(); monthView.EnableAppointmentsScrolling = true; } Workaround: set the AutoSizeAppointments property to false.
How to reproduce: public partial class RadForm1 : Telerik.WinControls.UI.RadForm { public RadForm1() { InitializeComponent(); Resource resource1 = new Resource(); resource1.Id = new EventId(1); resource1.Name = "Resource 1"; resource1.Color = Color.Blue; Resource resource2 = new Resource(); resource2.Id = new EventId(2); resource2.Name = "Resource 2"; resource2.Color = Color.Green; Resource resource3 = new Resource(); resource3.Id = new EventId(3); resource3.Name = "Resource 3"; resource3.Color = Color.Red; this.radScheduler1.Resources.Add(resource1); this.radScheduler1.Resources.Add(resource2); this.radScheduler1.Resources.Add(resource3); } private void RadForm1_Load(object sender, EventArgs e) { this.radScheduler1.GroupType = GroupType.Resource; ((SchedulerViewGroupedByResourceElementBase)this.radScheduler1.ViewElement).ResourceStartIndex = 2; } private void radButton1_Click(object sender, EventArgs e) { this.radScheduler1.Resources.RemoveAt(0); } } Workaround: public partial class RadForm1 : Telerik.WinControls.UI.RadForm { public RadForm1() { InitializeComponent(); Resource resource1 = new Resource(); resource1.Id = new EventId(1); resource1.Name = "Resource 1"; resource1.Color = Color.Blue; Resource resource2 = new Resource(); resource2.Id = new EventId(2); resource2.Name = "Resource 2"; resource2.Color = Color.Green; Resource resource3 = new Resource(); resource3.Id = new EventId(3); resource3.Name = "Resource 3"; resource3.Color = Color.Red; this.radScheduler1.Resources.Add(resource1); this.radScheduler1.Resources.Add(resource2); this.radScheduler1.Resources.Add(resource3); } private void RadForm1_Load(object sender, EventArgs e) { this.radScheduler1.GroupType = GroupType.Resource; ((SchedulerViewGroupedByResourceElementBase)this.radScheduler1.ViewElement).ResourceStartIndex = 2; } private void radButton1_Click(object sender, EventArgs e) { this.radScheduler1.GroupType = GroupType.None; this.radScheduler1.Resources.RemoveAt(0); this.radScheduler1.GroupType = GroupType.Resource; } }
Please refer to the attached gif file and sample project. Workaround: remove the database restrictions and validate the data in the edit dialog before submitting the new appointment data.
To reproduce: this.radScheduler1.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.radScheduler1.Appointments.Add(new Appointment(DateTime.Now, TimeSpan.FromHours(2), "آقای حقیقت")); Please refer to the attached screenshot. Workaround: private void radScheduler1_AppointmentFormatting(object sender, SchedulerAppointmentEventArgs e) { e.AppointmentElement.UseHtml = false; }
To reproduce: RadScheduler radScheduler1 = new RadScheduler(); public Form1() { InitializeComponent(); radScheduler1.Top += 100; radScheduler1.Parent = this; this.radSchedulerNavigator1.AssociatedScheduler = radScheduler1; this.radScheduler1.ActiveViewType = SchedulerViewType.Timeline; Color[] colors = new Color[]{Color.LightBlue, Color.LightGreen, Color.LightYellow, Color.Red, Color.Orange, Color.Pink, Color.Purple, Color.Peru, Color.PowderBlue}; string[] names = new string[]{"Alan Smith", "Anne Dodsworth", "Boyan Mastoni", "Richard Duncan", "Maria Shnaider"}; for (int i = 0; i < names.Length; i++) { Resource resource = new Resource(); resource.Id = new EventId(i); resource.Name = names[i]; resource.Color = colors[i]; this.radScheduler1.Resources.Add(resource); } this.radScheduler1.GroupType = GroupType.Resource; this.radScheduler1.ActiveView.ResourcesPerView = 2; } private void radButton1_Click(object sender, EventArgs e) { SchedulerWeeklyCalendarPrintStyle weeklyCalendarStyle = new SchedulerWeeklyCalendarPrintStyle(); weeklyCalendarStyle.AppointmentFont = new System.Drawing.Font("Segoe UI", 12, FontStyle.Regular); weeklyCalendarStyle.HeadingAreaHeight = 120; weeklyCalendarStyle.HoursColumnWidth = 30; this.radScheduler1.PrintStyle = weeklyCalendarStyle; this.radScheduler1.PrintPreview(); } Workaround: Change the view before printing.
To reproduce: - Use the search in the scheduler navigator. - Sort the grid by start/end date. - The values are sorted as strings. Workraround: - Use custom sorting.
To reproduce: 1. Add a RadScheduler and associate a RadSchedulerNavigator to it. 2. Change the culture to "fa-IR". When running the application you will notice that the time range in the navigator is not displayed correctly considering the culture of the associate RadScheduler. Note: you can set the SchedulerNavigatorElement.DateFormat property to "dd dddd". Thus, the time range should be displayed in a similar way as the header cells in RadScheduler. Workaround: you can controls what to be displayed in the navigator by the SchedulerNavigatorElement.DateLabel.Text property. this.radScheduler1.Culture = new System.Globalization.CultureInfo("fa-IR"); string start = this.radScheduler1.ActiveView.StartDate.ToString(this.radSchedulerNavigator1.SchedulerNavigatorElement.DateFormat, this.radScheduler1.Culture); string end = this.radScheduler1.ActiveView.EndDate.ToString(this.radSchedulerNavigator1.SchedulerNavigatorElement.DateFormat, this.radScheduler1.Culture); this.radSchedulerNavigator1.SchedulerNavigatorElement.DateLabel.Text = start + " - " + end;
Currently RadScheduler can only group the appointments first by resource and then by date. It should be possible to group the appointments in day view and in week view first by date and then by resource.
Implement search function in RadSchedulerNavigator.
To reproduce: run the sample project and follow the illustrates steps from the gif file. Workaround: close the tooltip programmatically: private void radScheduler1_AppointmentMouseDown(object sender, SchedulerAppointmentMouseEventArgs e) { if (tooltip != null) { tooltip.Hide(this.radScheduler1); } } ToolTip tooltip = null; private void radScheduler1_ToolTipTextNeeded(object sender, Telerik.WinControls.ToolTipTextNeededEventArgs e) { AppointmentElement app = sender as AppointmentElement; if (app != null) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 10; i++) { sb.AppendLine(app.Appointment.Summary + i + " " + app.Appointment.Summary + i + i + " " + app.Appointment.Summary); } e.ToolTipText = sb.ToString(); tooltip = e.ToolTip; } }
This feature is required for OpenEdge scenarios. A common case is that the resource_id field is stored as an integer field in your DataSource. But RadScheduler needs EventId type. You can have a look at the Appointment.ResourceId property which expects EventId value, not an integer. It is necessary to use a SchedulerMapping in this case and convert the integer value to EventId used by RadScheduler and convert the EventId to an integer used by your DataSource. This conversion is performed by the ConvertToDataSource and ConvertToScheduler callbacks. It is responsible for the proper conversion of the integer resource_id value coming from the DataSource to the RadScheduler's EventId. Additional information for the SchedulerMapping is available here: http://docs.telerik.com/devtools/winforms/scheduler/data-binding/scheduler-mapping In C#, it is just necessary to specify the name of the callback which will handle the conversion but it seems to be a problem in ABL. It is required to have events.
If you want to show the borders for the weekdays, the left most border is not shown because another element is over the cell. It is not possible to hide this top left cell and show the left border for Sunday.
This is reproducible not only with Material theme but with the other themes as well. Workaround: private void radScheduler1_CellFormatting(object sender, Telerik.WinControls.UI.SchedulerCellEventArgs e) { e.CellElement.ZIndex = 0; }
Please refer to the attached screenshot from Outlook.
Run the application on a Windows 10 machine and scroll to the bottom. Please refer to the attached gif file.
This request is to add Working hours range of the view, which will style the cells as working and non working. In addition, add a property ShowWorkingHours while will determine whether non-working hours are visible or not. Or perhaps for the sake of consistency, we can have API as in the day view: dayView.RangeFactor = ScaleRange.QuarterHour dayView.RulerStartScale = 9 dayView.RulerStartScaleMinutes = 30 dayView.RulerEndScale = 14 dayView.RulerEndScaleMinutes = 45