New to Telerik UI for ASP.NET AJAX? Download free 30-day trial

Populating the Recurrence Rule

The recurrence editor can be populated either from a RecurrenceRule object or from a string.



RecurrenceEditor1.RecurrenceRule = new DailyRecurrenceRule(1, range);
// or
RecurrenceEditor1.RecurrenceRuleText = storedRule;



RecurrenceEditor1.RecurrenceRule = new DailyRecurrenceRule(1, range)
' or
RecurrenceEditor1.RecurrenceRuleText = storedRule

The following examples show how different rules can be generated in FormCrated event of the Scheduler.

HourlyRecurence:



protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
{
    if (e.Container.Mode == SchedulerFormMode.AdvancedInsert)
    {
        RecurrenceEditor recurrenceEditor = e.Container.FindControl("RecurrenceEditor") as RecurrenceEditor;
          //Creating a hourly Recurrence rule
        int interval = 1;
        RecurrenceRange range = new RecurrenceRange();
        range.Start = DateTime.Now;
        range.EventDuration = TimeSpan.FromMinutes(30);
        range.MaxOccurrences = 3;
        recurrenceEditor.RecurrenceRule = new HourlyRecurrenceRule(interval, range);

    }
}
Protected Sub RadScheduler1_FormCreated(ByVal sender As Object, ByVal e As SchedulerFormCreatedEventArgs)
    If e.Container.Mode = SchedulerFormMode.AdvancedInsert Then
        Dim recurrenceEditor As RecurrenceEditor = TryCast(e.Container.FindControl("RecurrenceEditor"), RecurrenceEditor)
        'Creating a hourly Recurrence rule
        Dim interval As Integer = 1
        Dim range As New RecurrenceRange()
        range.Start = DateTime.Now
        range.EventDuration = TimeSpan.FromMinutes(30)
        range.MaxOccurrences = 3
        recurrenceEditor.RecurrenceRule = New HourlyRecurrenceRule(interval, range)
    End If
End Sub

DailyRecurence:

//Creating a daily Recurrence rule
int interval = 1;
RecurrenceRange range = new RecurrenceRange();
range.Start = DateTime.Now;
range.EventDuration = TimeSpan.FromHours(1);
range.MaxOccurrences = 3;
recurrenceEditor.RecurrenceRule = new DailyRecurrenceRule(interval, range);
//RecurrenceDay rd = RecurrenceDay.WeekDays;
//recurrenceEditor.RecurrenceRule = new DailyRecurrenceRule(rd, range);
'Creating a daily Recurrence rule
Dim interval As Integer = 1
Dim range As New RecurrenceRange()
range.Start = DateTime.Now
range.EventDuration = TimeSpan.FromHours(1)
range.MaxOccurrences = 3
recurrenceEditor.RecurrenceRule = New DailyRecurrenceRule(interval, range)
'RecurrenceDay rd = RecurrenceDay.WeekDays;
'recurrenceEditor.RecurrenceRule = new DailyRecurrenceRule(rd, range);


WeeklyRecurence:

//Creating a Weekly Recurrence rule
int interval = 2;
RecurrenceRange range = new RecurrenceRange();
range.Start = DateTime.Now;
range.EventDuration = TimeSpan.FromMinutes(30);
range.MaxOccurrences = 3;
RecurrenceDay recurrenceDay = RecurrenceDay.Wednesday;
//To set multiple recurrence days, a bitwise mask should be used
//RecurrenceDay recurrenceDay = RecurrenceDay.Monday | RecurrenceDay.Wednesday | RecurrenceDay.Friday;
recurrenceEditor.RecurrenceRule = new WeeklyRecurrenceRule(interval, recurrenceDay, range);
//DayOfWeek startDayOfWeek = DayOfWeek.Tuesday;
//recurrenceEditor.RecurrenceRule = new WeeklyRecurrenceRule(interval, recurrenceDay, range, startDayOfWeek);


'Creating a Weekly Recurrence rule
Dim interval As Integer = 2
Dim range As New RecurrenceRange()
range.Start = DateTime.Now
range.EventDuration = TimeSpan.FromMinutes(30)
range.MaxOccurrences = 3
Dim recurrenceDay As RecurrenceDay = RecurrenceDay.Wednesday
'To set multiple recurrence days, a bitwise mask should be used
'Dim recurrenceDay As RecurrenceDay = RecurrenceDay.Monday Or RecurrenceDay.Wednesday Or RecurrenceDay.Friday
recurrenceEditor.RecurrenceRule = New WeeklyRecurrenceRule(interval, recurrenceDay, range)
'DayOfWeek startDayOfWeek = DayOfWeek.Tuesday;
'recurrenceEditor.RecurrenceRule = new WeeklyRecurrenceRule(interval, recurrenceDay, range, startDayOfWeek);

MonthlyRecurence:

//Creating a monthly Recurrence rule
int interval = 1;
int dayOrdinal = 2;
RecurrenceRange range = new RecurrenceRange();
range.Start = DateTime.Now;
range.EventDuration = TimeSpan.FromMinutes(30);
range.MaxOccurrences = 3;
recurrenceEditor.RecurrenceRule = new MonthlyRecurrenceRule(dayOrdinal, interval, range);
//RecurrenceDay DayOfWeekMask = RecurrenceDay.Monday;
//recurrenceEditor.RecurrenceRule = new MonthlyRecurrenceRule(dayOrdinal, DayOfWeekMask, interval, range);


'Creating a monthly Recurrence rule
Dim interval As Integer = 1
Dim dayOrdinal As Integer = 2
Dim range As New RecurrenceRange()
range.Start = DateTime.Now
range.EventDuration = TimeSpan.FromMinutes(30)
range.MaxOccurrences = 3
recurrenceEditor.RecurrenceRule = New MonthlyRecurrenceRule(dayOrdinal, interval, range)
'RecurrenceDay DayOfWeekMask = RecurrenceDay.Monday;
'recurrenceEditor.RecurrenceRule = new MonthlyRecurrenceRule(dayOrdinal, DayOfWeekMask, interval, range);

YearlyRecurence:

//Creating a yearly Recurrence rule
int dayOrdinal = 2;
RecurrenceRange range = new RecurrenceRange();
range.Start = DateTime.Now;
range.EventDuration = TimeSpan.FromMinutes(30);
range.MaxOccurrences = 3;
RecurrenceMonth month = RecurrenceMonth.June;
recurrenceEditor.RecurrenceRule = new YearlyRecurrenceRule(month, dayOrdinal, range);
//RecurrenceDay dayOfWeek = RecurrenceDay.Monday;
//recurrenceEditor.RecurrenceRule = new YearlyRecurrenceRule(dayOrdinal, month, dayOfWeek, range);


'Creating a yearly Recurrence rule
Dim dayOrdinal As Integer = 2
Dim range As New RecurrenceRange()
range.Start = DateTime.Now
range.EventDuration = TimeSpan.FromMinutes(30)
range.MaxOccurrences = 3
Dim month As RecurrenceMonth = RecurrenceMonth.June
recurrenceEditor.RecurrenceRule = New YearlyRecurrenceRule(month, dayOrdinal, range)
'RecurrenceDay dayOfWeek = RecurrenceDay.Monday;
'recurrenceEditor.RecurrenceRule = new YearlyRecurrenceRule(dayOrdinal, month, dayOfWeek, range);

The recurrence rule can be created and directly added as a property of an Appointment as shown in the code:

protected void RadButton1_Click(object sender, EventArgs e)
{
    Appointment newAppointment = new Appointment();
    newAppointment.Subject = RadTextBox1.Text;
    newAppointment.Start = DateTime.Now;
    newAppointment.End = DateTime.Now.Add(TimeSpan.FromHours(1));
    int interval = 1;
    RecurrenceRange range = new RecurrenceRange();
    range.Start = newAppointment.Start;
    range.EventDuration = newAppointment.End-newAppointment.Start;
    range.MaxOccurrences = 3;
    RecurrenceRule newDayly = new DailyRecurrenceRule(interval, range);
    newAppointment.RecurrenceRule = newDayly.ToString();

    RadScheduler1.InsertAppointment(newAppointment);
    RadScheduler1.Rebind();
}


Protected Sub RadButton1_Click(ByVal sender As Object, ByVal e As EventArgs)
    Dim newAppointment As New Appointment()
    newAppointment.Subject = RadTextBox1.Text
    newAppointment.Start = DateTime.Now
    newAppointment.[End] = DateTime.Now.Add(TimeSpan.FromHours(1))
    Dim interval As Integer = 1
    Dim range As New RecurrenceRange()
    range.Start = newAppointment.Start
    range.EventDuration = newAppointment.[End] - newAppointment.Start
    range.MaxOccurrences = 3
    Dim newDayly As RecurrenceRule = New DailyRecurrenceRule(interval, range)
    newAppointment.RecurrenceRule = newDayly.ToString()

    RadScheduler1.InsertAppointment(newAppointment)
    RadScheduler1.Rebind()
End Sub

In this article