How To Wire A SharePoint List To A Telerik RadScheduler

Wiring a List of SPListItems to a Telerik RadScheduler is pretty easy. The important thing to remember when working with a RadScheduler is that it expects a list of Appointment objects, how you hydrate an Appointment object is pretty much up to you. Were it gets kinda weird is when you have the collection, the RadScheduler.Provider expects a SchedulerProviderBase super class. Either way it’s not too bad.

So let’s assume I am building the RadScheduler object in something like CreateChildControls like so:

[csharp]
RadScheduler theScheduler = new RadScheduler();
theScheduler.TimelineView.UserSelectable = true;
theScheduler.OverflowBehavior = OverflowBehavior.Expand;
theScheduler.SelectedView = SchedulerViewType.MonthView;
[/csharp]

In the above I am missing the RadScheduler.Provider property, so gotta populate that. In this example, I am converting the SPList to a dataset, but you could iterate the items and return the values accordingly taking into account type casting. So I end up in a dataset format with something like this:

[csharp]
tempCollection.AddRange(from DataRow row in masterTable.Rows
select new Appointment
{
Start = DateTime.Parse(row[startFieldName].ToString()), End = DateTime.Parse(row[endFieldName].ToString()), ID = Guid.NewGuid(), Subject = StripTagsRegex(row[subjectFieldName].ToString()), RecurrenceState = state
});
public static string StripTagsRegex(string source)
{
return Regex.Replace(source, “”, string.Empty);
}
[/csharp]

You could easily just do the SPListItems:

[csharp]
tempCollection.AddRange(from SPListItem row in list.Items
select new Appointment
{
Start = DateTime.Parse(row[startFieldName].ToString()), End = DateTime.Parse(row[endFieldName].ToString()), ID = Guid.NewGuid(), Subject = StripTagsRegex(row[subjectFieldName].ToString()), RecurrenceState = state
});
[/csharp]
Once you have the collection of Appointments, you have to make the SchedulerProviderBase superclass. This looks like this:
[csharp]
public class ListSchedulerProvider : SchedulerProviderBase
{
private readonly List _listItemCollection;
public ListSchedulerProvider(List collection)
{
_listItemCollection = new List();
_listItemCollection = collection;
}
public override IEnumerable GetAppointments(RadScheduler owner)
{
return _listItemCollection;
}
public override IDictionary> GetResources(ISchedulerInfo schedulerInfo)
{
return new Dictionary>();
}
}
[/csharp]

Then coordinate this class with scheduler Provider property:

[csharp]
RadScheduler.Provider = new ListSchedulerProvider(Your Typed Appointment Collection);
[/csharp]

Share

One thought on “How To Wire A SharePoint List To A Telerik RadScheduler”

  1. I am very interested in your post. because It is very helpful and useful for developers. Thanks for share this post.

Leave a Reply

Your email address will not be published. Required fields are marked *