I'd like to automatically update the description box content based on the resource the user has selected. I haven't had any luck finding an event to detect when the resource is updated in an appointment. Any suggestions?
Thanks!
2 Answers, 1 is accepted
Thank you for clarifying that you want to detect the resource selection changing in the EditAppointmentDialog. Indeed, in this case you will need to follow a different approach:
this.radScheduler1.AppointmentEditDialogShowing += radScheduler1_AppointmentEditDialogShowing;
private void radScheduler1_AppointmentEditDialogShowing(object sender, AppointmentEditDialogShowingEventArgs e)
{
EditAppointmentDialog editDialog = e.AppointmentEditDialog as EditAppointmentDialog;
if (editDialog != null)
{
editDialog.Shown += editDialog_Shown;
}
}
private void editDialog_Shown(object sender, EventArgs e)
{
EditAppointmentDialog editDialog = sender as EditAppointmentDialog;
RadCheckedDropDownList checkedCmbResource = editDialog.Controls["checkedCmbResource"] as RadCheckedDropDownList;
checkedCmbResource.ItemCheckedChanged -= checkedCmbResource_ItemCheckedChanged;
checkedCmbResource.ItemCheckedChanged += checkedCmbResource_ItemCheckedChanged;
}
private void checkedCmbResource_ItemCheckedChanged(object sender, RadCheckedListDataItemEventArgs e)
{
RadMessageBox.Show(e.Item.Text + " >> checked = " + e.Item.Checked);
}
I believe that it would fit your scenario.
Regards,
Dess | Tech Support Engineer, Principal
Progress Telerik
Virtual Classroom, the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products quickly just got a fresh new look + new and improved content including a brand new Blazor course! Check it out at https://learn.telerik.com/.
I have prepared a sample code snippet demonstrating how to detect when a scheduler cell is clicked and detect what is the affected resource. Hence, it is easy to determine when the selected resource is changed considering the last clicked resource:
public RadForm1()
{
InitializeComponent();
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 = this.radScheduler1.Resources.Count;
this.radScheduler1.CellSelectionChanging += radScheduler1_CellSelectionChanging;
}
Resource lastSelectedResource = null;
private void radScheduler1_CellSelectionChanging(object sender, SchedulerCellSelectingEventArgs e)
{
if (e.Cell != null)
{
Resource selectedResource = GetResourceByID(e.SelectionResourceId);
if (selectedResource != null && selectedResource != lastSelectedResource)
{
lastSelectedResource = selectedResource;
this.Text = lastSelectedResource.Name;
}
}
}
private Resource GetResourceByID(EventId eventId)
{
foreach (Resource r in this.radScheduler1.Resources)
{
if (r.Id.KeyValue == eventId.KeyValue)
{
return r;
}
}
return null;
}
The attached gif file illustrates the achieved result.
I hope this information helps. If you need any further assistance please don't hesitate to contact me.
Regards,
Dess | Tech Support Engineer, Principal
Progress Telerik
Virtual Classroom, the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products quickly just got a fresh new look + new and improved content including a brand new Blazor course! Check it out at https://learn.telerik.com/.
Dess,
thank you for your very detailed reply. However I'm looking for when a user changes the selected Resource on the EditAppointmentDialog form. Unless I'm missing something in your reply?