Showing posts with label Telerik. Show all posts
Showing posts with label Telerik. Show all posts

Sunday, June 21, 2015

Binding ScheduleView to Database - Conclusion

In this series, we saw how to work with ScheduleView control and how to binding to database. The modern design patterns were strictly kept, and The results are very elegant code, readable, and easily implementable.

This series is modular. You can read and implement each part separately, but I recommend to read this in order, from part 1 to part 8.

For each part, I created specific branch of the source code, but you can download the 'master' branch if you want to see the whole story.

https://github.com/YehudahA/ScheduleViewPractices/tree/master


I'll be glad to get comments, corrections or questions.


1. QuickStart The shortest way: using of inheritance from the ready class 'Appointment'
2. Considerations When is better to custom implement the 'IAppointment' interface.
3. Implement custom Appointment How to implement the IAppointment interface.
4. Categorize How to associate Appointment to category.
5. Categories editor Let the user Create/Change/Delete categories
6. Resources How to allocate resources to the Appointment.
7. Recurrence rule Configure repeating appointments.
8. Time marker Assign a time marker to Appointment

Thursday, June 18, 2015

Binding ScheduleView to Database part 8: Time Markers

OK guys, we implemented already most of the Appointment functionality, and we have just a little job for completing: Time markers.

ScheduleView provides us a time markers support. we can assign a time marker to each one of our appointments, thus making them easily distinguishable.

Usually, the end user should select from a closed list, and he should not have to edit the list. Therefore, unlike categories. Therefore, Usually we do not need to store the TimeMarker options in the database, and we can set it in the code.

However, if you want, you can also create a Model for TimeMarker, and manage them in the database, as we did with categories. But below, we will implement the easy way.


Wednesday, June 17, 2015

Binding ScheduleView to Database part 7: Recurrence

ScheduleView provides the functionality to configure repeating appointments. The user has the ability to apply recurring scheduling patterns such as daily, weekly, monthly or set a range of recurrence from date to date. If you have a daily task, for example: call mom, you can create an appointment and set his RecurrenceRule.

It is recommended to read Telerik's documentation, they explains very clearly, but they explanation only how to work with in-memory data, while in the real-world we want working with database.

Relative to previous articles, this article is a little complicated, because it covers a lot of objects, and requires an understanding of the internal behavior of the machine. I worked hard to decipher the behavior required, including code-review of the Telerik's source code [of course: with Telerik JustDecompile].
But in the end, I got a very good result, readable and elegant code, and here it is.

The source code, is available on my GitHub reporitory, and i recommend to see it. Here, I'm focusing only the essentials, so as not to burden the reader.

Monday, June 15, 2015

Binding ScheduleView to Database part 6: Resources

The RadScheduleView allows you to define custom resources that can be assigned to the appointments. For example: you can assigned appointment to specific man or specific location.

You can read about Resources in this article writen by Telerik team. The article is very simple, and I recommend to read it before this post. 

But as you can see, the Telerik's article [and other Telerik's samples] defines the resources as in-memory collection, while in the real world we want store the resources in the database.

In this post we will see how to do it, simply and easily.


Binding ScheduleView to Database part 5: Categories editor

In the previous post we saw how to associate an appointment to category. What about categories editing? How the user can edit the categories?

The solution is very simple: GridView with two columns, one is bound to DisplayName property, and the second is custom column with ColorPicker control, and it bound to CategoryBrush property.

Below is the code of the editor View. The source code is available on my GitHub repository, including the ViewModel, Mvvm DialogService and more.

Sunday, June 14, 2015

Binding ScheduleView to Database part 4: Categories

Let's see how to work with categories and database.

The source code for this post, is available on GitHub.


1. CategoryModel class

First, we need define a class, which it is derived from ICategory interface.

public class CategoryModel : BindableBase, ICategory

I use the Model suffix, to avoid confusing with Telerik's Category class.
Usually, we want also give to user the ability of Edit the categories, therefore our class must be derived from INotifyPropertyChanged or BidnableBase [ViewModelBase if you use MVVMLight].

Binding ScehduleView to Database part 3: Implement IAppointment

As we saw in the previous post, the best way is to implement the IAppointment interface without inheritance from Appointment class.

The whole code is available on GitHub, and below we will go over the code and explain every block.


1. Class:


public class AppointmentModel : BindableBase, IAppointment, IExtendedAppointment

Binding ScheduleView to Database part 2: The best way

In the previous post, we saw how to bind ScheduleView control to database, using class that derived from Telerik.Windows.Controls.ScheduleView.Appointment class. This is a good way, but let's examine if this is also the best way.

If you try to add a new appointment [Doublic-click on ScheduleView control, edit, click OK. don't forget click also on Save button before closing the application, you will see that these properties are bound well to database:

  • Subject
  • Description [mapped to Body column]
  • Start
  • End
  • Importance.


However, Some properties are not mapped to database and not saved. If you try set them, you will see the changes, until you restart the application, then the changes will be lost. It is because of  those properties are Objects and not simple properties.

These are the properties that not implemented yet:

  • Category
  • TimeMarker
  • Recurrence
  • Resources

Wednesday, June 10, 2015

Binding ScheduleView to Database part 1: QuickStart

In this article we will create simple solution of Telerik ScheduleView control, that his data source is Entity framework.

This article is part of a guide, which aims to explain how to use Telerik ScheduleView control with a database. See here the agenda.

The source code of this article, is available on GitHub.

OK, let's start.


Binding ScheduleView to Database - Overview

Telerik ScheduleView control is a scheduling component, for manage appointments or tasks, like Outlook.

Telerik documentation provides a useful guide and covers the most features and scenarios. But somehow, there is no documentation and training how to work with database. All the samples uses in-memory data sources, but no real-sample of save data in database.

Yes, I read this tutorial, and I tried this GitHub project. Unfortunately, those resources are not up-to-date, and they use very obsolete code and anti-pattern practices, and it is very difficult to read and customize.

Therefore, because it is so necessary, I think it would be good to write a comprehensive guide, step by step, how to use ScheduleView control with database.

I will use Sql server as database, Entity framework as ORM, and GitHub as repository.

You can explore and download the source code here:
https://github.com/YehudahA/ScheduleViewPractices/tree/master