Steps to reproduce: radScheduler.ActiveViewType = SchedulerViewType.Timeline; radScheduler.GetTimelineView().ShowTimescale(Timescales.Hours); radScheduler.GetTimelineView().GetTimescale(Timescales.Hours).DisplayedCellsCount = 10;//set 8 for workarround. radScheduler.ActiveView.StartDate = DateTime.Today; radScheduler.GetTimelineView().RangeStartDate = DateTime.Today.AddHours(7); radScheduler.GetTimelineView().RangeEndDate = DateTime.Today.AddDays(1); radScheduler.GetTimelineView().ResourcesPerView = 5; radScheduler.GroupType = GroupType.Resource; radScheduler.SchedulerElement.SetResourceHeaderAngleTransform(SchedulerViewType.Timeline, 0);
ADD. Scheduler - add possibility to increase the height of the line showing the current time
Let's say that you have an appoiment that starts at 8:30 and ends at 8:30. RadScheduler will display it as it should, but it will not be considered by the printing functionality. We should also have in mind the case where there are several appointments starting from 8:30 and ending at 8:30.
1. Setup a new project with RadScheduler and bind it to a database. 2. Run the project and add an appointment. 3. Resize the appointment by dragging its bottom side down.
BindingSource does not set the correct possition in the binding list and always fires the ListChanged event with an index of 0. CLOSED: RadScheduler is not a list-editing control and does not support currency management.
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; }
Functionality to add an exception to the first date of an appointment
Add functionality to navigate with a custom step. Currently, the navigation step can be only a day. In the future the user will be able to chose among "Day", "Week" and "Month".
Add CellFormatting event for the scheduler cells. (Similar to the CellFormatting event of the RadGridView)
If you have 3 appointments at 13:00, 2 of which end at 14:00 and the third ends at 17:00 and then you add another appointment that starts at 14:30 and stops at 15:30, the width of this appointment is 1/3 of the total with for the day although there is room for this appointment to be 2/3 of the width of that day.
To reproduce: public Form1() { InitializeComponent(); List<string> resources = new List<string>(); for (int index = 1; index <= 30; index++) { resources.Add("Resource" + index); } for (int i = 0; i <= resources.Count - 1; i++) { Resource resource = new Resource(); resource.Id = new EventId(i); resource.Name = resources[i]; this.RadSchedulerDemo.Resources.Add(resource); } this.RadSchedulerDemo.GroupType = GroupType.Resource; Appointment appointment = null; this.RadSchedulerDemo.ActiveViewType = SchedulerViewType.Timeline; TimelineGroupingByResourcesElement headerElement = this.RadSchedulerDemo.SchedulerElement.ViewElement as TimelineGroupingByResourcesElement; headerElement.ResourceHeaderWidth = 150; Random rand = new Random(); for (int i = 0; i <= 99; i++) { appointment = new Appointment(DateTime.Now.AddHours(i), new TimeSpan(30), "Summary" + i, "Description" + i, "location" + i); appointment.ResourceId = this.RadSchedulerDemo.Resources[rand.Next(0, this.RadSchedulerDemo.Resources.Count)].Id; appointment.BackgroundId = Convert.ToInt32(this.RadSchedulerDemo.Backgrounds[rand.Next(0, this.RadSchedulerDemo.Backgrounds.Count)].Id); this.RadSchedulerDemo.Appointments.Add(appointment); } this.RadSchedulerDemo.GetTimelineView().ShowTimescale(Timescales.Hours); SchedulerTimescale timescale1 = this.RadSchedulerDemo.GetTimelineView().GetScaling(); timescale1.DisplayedCellsCount = 30; this.RadSchedulerDemo.ActiveView.ResourcesPerView = 10; } Try to scroll to the last resource when you ResourcesPerView =2 and when ResourcesPerView =10. You will notice considerable difference in scrolling speed.
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 = 4; this.radScheduler1.ActiveViewType = SchedulerViewType.Timeline; this.radScheduler1.GetTimelineView().GroupSeparatorWidth = 0; By default, the GroupSeparatorWidth property is set to 3. If you need to remove the resources separator, it is necessary to set the GroupSeparatorWidth property to 0 which is not possible at the moment with the public API. Workaround: FieldInfo fi = typeof(SchedulerView).GetField("groupSeparatorWidth", BindingFlags.Instance | BindingFlags.NonPublic); fi.SetValue(this.radScheduler1.GetTimelineView(), 0);
When you drag an appointment to a cell in MonthView, its start time will be reset to 12:00AM. To workaround the issue, use the following code: public partial class Form1 : Form { public Form1() { InitializeComponent(); this.radScheduler1.SchedulerElement.DragDropBehavior = new MyDraggingBehavior(this.radScheduler1.SchedulerElement); } } class MyDraggingBehavior : AppointmentDraggingBehavior { public MyDraggingBehavior(RadSchedulerElement element) : base(element) { } public override bool Move(DateTime newDate) { if (this.Scheduler.ActiveViewType == SchedulerViewType.Month) { newDate = newDate.Add(this.ActiveFeedback.AssociatedAppointment.Start.TimeOfDay); } return base.Move(newDate); } }
Use the RadSchedulerDB_Objects project from the "Introduction to RadScheduler for WinForms" webinar (http://tv.telerik.com/watch/winforms/radscheduler/introduction-radscheduler-winforms). If you run this project without opening the designer, the binding works correctly. If you open the form in the designer and then run the project, only one empty appointment will be displayed. The issue occurs because when opening the form, the following lines are removed from the designer: ((System.ComponentModel.ISupportInitialize)(this.schedulerBindingDataSource1.EventProvider)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.schedulerBindingDataSource1.ResourceProvider)).BeginInit();
The AppoitnemtSelected event is not fired in MultiDayView.
To reproduce: Create a SQL table as per this article - http://www.telerik.com/help/winforms/scheduler-data-binding-using-datasource-property.html . Add the following mappings using EntityFramework or OpenAccess - http://www.telerik.com/help/winforms/scheduler-data-binding-using-datasource-property.html. You will notice that the resources cannot be mapped. Workaround: Implement a One-to-Many relation by adding a ResourceId column in the database and removing the old table. Resolution: Both EF and TDA mappings work. Due to the differences in the mechanisms of the two products there are some slight adjustments that need to be made. Below is how to set up the mappings with EF and in commented code for ORM. SchedulerDataEntities1 entityContext = new SchedulerDataEntities1();
To reproduce: follow the steps from the attached gif file. Workaround: public Form1() { InitializeComponent(); this.radScheduler1.RecurrenceEditDialogShowing += radScheduler1_RecurrenceEditDialogShowing; } CustomEditRecurrenceDialog dialog = null; private void radScheduler1_RecurrenceEditDialogShowing(object sender, Telerik.WinControls.UI.RecurrenceEditDialogShowingEventArgs e) { if (dialog == null) { dialog = new CustomEditRecurrenceDialog(e.Appointment); } e.RecurrenceEditDialog = dialog; } public class CustomEditRecurrenceDialog : EditRecurrenceDialog { public CustomEditRecurrenceDialog(IEvent appointment) : base(appointment) { } protected override void ApplyAppointmentDates() { DateTime end = this.appointment.End; base.ApplyAppointmentDates(); this.appointment.End = new DateTime(end.Year, end.Month, end.Day, this.timeEnd.Value.Hour, this.timeEnd.Value.Minute, this.timeEnd.Value.Second); } }
If you drag an appointment to the AllDay area or if you modify its dates, the AllDay property is not updated.
RadScheduler printing does not take in consideration the Ruler scale and always print with 30 minutes timescale.