3 Answers, 1 is accepted
0
Hello Luigi,
Thank you for writing.
You cannot associate more than one RadScheduler with a RadBindingNavigator at a time. You can, however put a RadDropDownList with the available schedulers. So that when a value is selected the AssociatedScheduler property of the navigator will be changed. For example here is a sample code:
The SchedulerWrapper class is needed since you can bind only to properties which are declared in the bound type.
I hope this helps.
Regards,
George
Telerik
Thank you for writing.
You cannot associate more than one RadScheduler with a RadBindingNavigator at a time. You can, however put a RadDropDownList with the available schedulers. So that when a value is selected the AssociatedScheduler property of the navigator will be changed. For example here is a sample code:
this.DropDownList = new RadDropDownList();this.DropDownList.Parent = this;this.DropDownList.Dock = DockStyle.Top;List<SchedulerWrapper> schedulers = new List<SchedulerWrapper>();RadScheduler scheduler1 = new RadScheduler(){ Parent = this, Dock = DockStyle.Right};RadScheduler scheduler2 = new RadScheduler(){ Parent = this, Dock = DockStyle.Left};schedulers.Add(new SchedulerWrapper(scheduler1));schedulers.Add(new SchedulerWrapper(scheduler2));this.DropDownList.DataSource = schedulers;this.DropDownList.DisplayMember = "Name";this.DropDownList.DataMember = "Scheduler";this.DropDownList.SelectedValueChanged += dropDownList_SelectedValueChanged;private RadSchedulerNavigator navigaror;void dropDownList_SelectedValueChanged(object sender, EventArgs e){ this.navigaror.AssociatedScheduler = (this.DropDownList.SelectedItem.DataBoundItem as SchedulerWrapper).Scheduler;}class SchedulerWrapper{ public string Name { get { return this.Scheduler.Name; } } public RadScheduler Scheduler { get; private set; } public SchedulerWrapper(RadScheduler scheduler) { this.Scheduler = scheduler; }}The SchedulerWrapper class is needed since you can bind only to properties which are declared in the bound type.
I hope this helps.
Regards,
George
Telerik
Check out Telerik Analytics, the service which allows developers to discover app usage patterns, analyze user data, log exceptions, solve problems and profile application performance at run time. Watch the videos and start improving your app based on facts, not hunches.
0
Luigi
Top achievements
Rank 1
answered on 23 Apr 2015, 10:17 AM
Hello George
Now I have the same necessity, but i must not insert a dropdownlist
How I can do?
With one Navigator i must do automatic change 2 schedulers
In attach find a screenshot of my form.
Thanks
0
Accepted
Hello Luigi,
Thank you for writing.
RadSchedulerNavigator can be associated to only one RadScheduler at a time. However, you can subscribe to all events introduced by the navigator and affect the second scheduler as well. Here is a sample code snippet demonstrating how to handle most of the events and affect the second scheduler:
I hope this information helps. Should you have further questions, I would be glad to help.
Regards,
Dess
Telerik
Thank you for writing.
RadSchedulerNavigator can be associated to only one RadScheduler at a time. However, you can subscribe to all events introduced by the navigator and affect the second scheduler as well. Here is a sample code snippet demonstrating how to handle most of the events and affect the second scheduler:
public Form1(){ InitializeComponent(); this.radSchedulerNavigator1.AssociatedScheduler = this.radScheduler1; this.radSchedulerNavigator1.DayViewClick += radSchedulerNavigator1_DayViewClick; this.radSchedulerNavigator1.WeekViewClick += radSchedulerNavigator1_WeekViewClick; this.radSchedulerNavigator1.MonthViewClick += radSchedulerNavigator1_MonthViewClick; this.radSchedulerNavigator1.TimelineViewClick += radSchedulerNavigator1_TimelineViewClick; this.radSchedulerNavigator1.ShowWeekendStateChanged += radSchedulerNavigator1_ShowWeekendStateChanged; this.radSchedulerNavigator1.NavigateBackwardsClick += radSchedulerNavigator1_NavigateBackwardsClick; this.radSchedulerNavigator1.NavigateForwardsClick += radSchedulerNavigator1_NavigateForwardsClick;}private void radSchedulerNavigator1_NavigateForwardsClick(object sender, EventArgs e){ int navigationStep = this.radSchedulerNavigator1.SchedulerNavigatorElement.NavigationStep; NavigationStepTypes navigationStepType = this.radSchedulerNavigator1.SchedulerNavigatorElement.NavigationStepType; switch (this.radScheduler2.ActiveViewType) { case SchedulerViewType.Day: case SchedulerViewType.MultiDay: navigationStep = 1; navigationStepType = NavigationStepTypes.Day; break; case SchedulerViewType.Timeline: navigationStep = 1; navigationStepType = StepsByScalling(this.radScheduler2.GetTimelineView().GetScaling().Timescale, ref navigationStep); break; case SchedulerViewType.Week: case SchedulerViewType.WorkWeek: navigationStep = 1; navigationStepType = NavigationStepTypes.Week; break; case SchedulerViewType.Month: navigationStep = 1; if (!this.radScheduler2.GetMonthView().ShowWeekend) { navigationStep += 2; } DateTime endDate = this.radScheduler2.ActiveView.EndDate.AddDays(navigationStep); DateTime dtStart = this.radScheduler2.ActiveView.StartDate; DateTime dtStartMonth = new DateTime(endDate.Year, endDate.Month, 1); navigationStep = dtStartMonth.Subtract(dtStart).Days; navigationStepType = NavigationStepTypes.Day; this.radScheduler2.GetMonthView().WeekCount = DateHelper.GetMonthDisplayWeeks(dtStartMonth, this.radScheduler2.Culture.DateTimeFormat); break; } RadScheduler.NavigateToNextViewCommand.ExecuteCommand(this.radScheduler2, navigationStepType, navigationStep);}private void radSchedulerNavigator1_NavigateBackwardsClick(object sender, EventArgs e){ int navigationStep = this.radSchedulerNavigator1.SchedulerNavigatorElement.NavigationStep; NavigationStepTypes navigationStepType = this.radSchedulerNavigator1.SchedulerNavigatorElement.NavigationStepType; switch (this.radScheduler2.ActiveViewType) { case SchedulerViewType.Day: navigationStep = 1; navigationStepType = NavigationStepTypes.Day; break; case SchedulerViewType.Timeline: navigationStep = 1; navigationStepType = StepsByScalling(this.radScheduler2.GetTimelineView().GetScaling().Timescale, ref navigationStep); break; case SchedulerViewType.Week: case SchedulerViewType.WorkWeek: navigationStep = 1; navigationStepType = NavigationStepTypes.Week; break; case SchedulerViewType.Month: navigationStep = 1; if (!this.radScheduler2.GetMonthView().ShowWeekend) { navigationStep += 2; } DateTime dtStart = this.radScheduler2.ActiveView.StartDate.AddDays(-navigationStep); DateTime dtStartMonth = new DateTime(dtStart.Year, dtStart.Month, 1); navigationStep = this.radScheduler2.ActiveView.StartDate.Subtract(dtStartMonth).Days; navigationStepType = NavigationStepTypes.Day; this.radScheduler2.GetMonthView().WeekCount = DateHelper.GetMonthDisplayWeeks(dtStartMonth, CultureInfo.CurrentCulture.DateTimeFormat); break; } RadScheduler.NavigateToPreviousViewCommand.ExecuteCommand(this.radScheduler2, navigationStepType, navigationStep);}private NavigationStepTypes StepsByScalling(Timescales timescale, ref int navigationStep){ NavigationStepTypes navigationStepType = NavigationStepTypes.Day; switch (timescale) { case Timescales.Minutes: navigationStepType = NavigationStepTypes.Minute; navigationStep = 15; break; case Timescales.HalfHour: navigationStepType = NavigationStepTypes.Minute; navigationStep = 30; break; case Timescales.Hours: navigationStepType = NavigationStepTypes.Hour; break; case Timescales.Days: navigationStepType = NavigationStepTypes.Day; break; case Timescales.Weeks: navigationStepType = NavigationStepTypes.Week; break; case Timescales.Months: navigationStepType = NavigationStepTypes.Month; break; case Timescales.Years: navigationStepType = NavigationStepTypes.Year; break; } return navigationStepType;}private void radSchedulerNavigator1_ShowWeekendStateChanged(object sender, Telerik.WinControls.UI.StateChangedEventArgs args){ if (this.radScheduler2.ActiveView is SchedulerWeekView) { (this.radScheduler2.ActiveView as SchedulerWeekView).ShowWeekend = this.radSchedulerNavigator1.ShowWeekendCheckBox.ToggleState == ToggleState.On; } else if (this.radScheduler2.ActiveView is SchedulerMonthView) { (this.radScheduler2.ActiveView as SchedulerMonthView).ShowWeekend = this.radSchedulerNavigator1.ShowWeekendCheckBox.ToggleState == ToggleState.On; }}private void radSchedulerNavigator1_TimelineViewClick(object sender, EventArgs e){ this.radScheduler2.ActiveViewType = Telerik.WinControls.UI.SchedulerViewType.Timeline;}private void radSchedulerNavigator1_MonthViewClick(object sender, EventArgs e){ this.radScheduler2.ActiveViewType = Telerik.WinControls.UI.SchedulerViewType.Month;}private void radSchedulerNavigator1_WeekViewClick(object sender, EventArgs e){ this.radScheduler2.ActiveViewType = Telerik.WinControls.UI.SchedulerViewType.Week;}private void radSchedulerNavigator1_DayViewClick(object sender, EventArgs e){ this.radScheduler2.ActiveViewType = Telerik.WinControls.UI.SchedulerViewType.Day;}I hope this information helps. Should you have further questions, I would be glad to help.
Dess
Telerik
See What's Next in App Development. Register for TelerikNEXT.
