AppointmentDataBound", not the XML file. It won't involk AppointmentUpdate.
Here is my code:
Imports Microsoft.VisualBasic
Imports System.Collections.Generic
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Data
Imports System.Configuration
Imports System.Web.Security
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports Telerik.Web.UI
Partial Class _Default
Inherits System.Web.UI.Page
Private Class CustomAppointmentComparer
Implements IComparer(Of Appointment)
Public Function Compare(first As Appointment, second As Appointment) As Integer Implements IComparer(Of Telerik.Web.UI.Appointment).Compare
Dim infoStart1 As String = first.Start.ToString
Dim infoend1 As String = first.End.ToString
Dim infoStar2 As String = second.Start.ToString
Dim infoend2 As String = second.End.ToString
If first Is Nothing OrElse second Is Nothing Then
Throw New InvalidOperationException("Can't compare null object(s).")
End If
If [String].Compare(first.Subject.ToString, second.Subject.ToString) < 0 Then
Return -1
End If
If [String].Compare(first.Subject.ToString, second.Subject.ToString) > 0 Then
Return 1
End If
Return 0
End Function
End Class
''Protected Sub Page_Init(sender As Object, e As EventArgs)
''Dim provider As New XmlSchedulerProvider(Server.MapPath("~/App_Data/AppointmentsA.xml"), True)
''RadScheduler2.AppointmentComparer = New CustomAppointmentComparer()
''End Sub
''Protected Overrides Sub OnInit(e As EventArgs)
''MyBase.OnInit(e)
''RadScheduler2.Provider = New XmlSchedulerProvider(Server.MapPath("~/App_Data/Appointments.xml"), True)
''RadScheduler2.Provider = New XmlSchedulerProvider(Server.MapPath("~/App_Data/Appointments.xml"), True)
''End Sub
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
RadScheduler2.AppointmentComparer = New CustomAppointmentComparer()
Dim appointments As Appointment() = RadScheduler2.Appointments.ToArray()
Array.Sort(appointments, New CustomAppointmentComparer())
For Each appointment As Appointment In appointments
Dim appointmentStart As DateTime = RadScheduler2.UtcToDisplay(appointment.Start)
If appointmentStart > RadScheduler2.SelectedDate Then
RadScheduler2.SelectedDate = appointmentStart.[Date]
Exit For
End If
Next
End Sub
Protected Sub RadScheduler1_AppointmentDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.SchedulerEventArgs) Handles RadScheduler2.AppointmentDataBound
e.Appointment.CssClass = "MyCustomAppointmentStyle"
If e.Appointment.Subject = "Availability" Then
e.Appointment.CssClass = "•rsCategoryYellow"
Else
e.Appointment.CssClass = "rsCategoryGreen"
End If
End Sub
Protected Sub RadScheduler2_FormCreated(ByVal sender As Object, ByVal e As SchedulerFormCreatedEventArgs) Handles RadScheduler2.FormCreated
If (e.Container.Mode = SchedulerFormMode.AdvancedEdit) OrElse (e.Container.Mode = SchedulerFormMode.AdvancedInsert) Then
Dim allDayCheckbox As CheckBox = DirectCast(e.Container.FindControl("AllDayEvent"), CheckBox)
allDayCheckbox.Style.Add("visibility", "hidden")
Dim attrAnnotationsTextbox As RadTextBox = DirectCast(e.Container.FindControl("Subject"), RadTextBox)
attrAnnotationsTextbox.Label = "Type"
attrAnnotationsTextbox.Enabled = False
Dim startPicker As RadTimePicker = DirectCast(e.Container.FindControl("StartTime"), RadTimePicker)
startPicker.TimeView.StartTime = TimeSpan.FromHours(8)
startPicker.TimeView.EndTime = TimeSpan.FromHours(24)
startPicker.TimeView.DataList.DataSource = Nothing
startPicker.TimeView.DataBind()
Dim endPicker As RadTimePicker = DirectCast(e.Container.FindControl("EndTime"), RadTimePicker)
endPicker.TimeView.StartTime = TimeSpan.FromHours(8)
endPicker.TimeView.EndTime = TimeSpan.FromHours(24)
endPicker.TimeView.DataList.DataSource = Nothing
endPicker.TimeView.DataBind()
End If
End Sub
Protected Sub RadScheduler2_AppointmentInsert(sender As Object, e As AppointmentInsertEventArgs)
If e.Appointment.Subject = "Prefered Availability" Then
Dim scheduler As RadScheduler = DirectCast(sender, RadScheduler)
For Each app As Appointment In scheduler.Appointments.GetAppointmentsInRange(e.Appointment.Start, e.Appointment.[End])
If app.Subject = "Availability" Then
If app.Start > e.Appointment.Start OrElse app.[End] <= e.Appointment.[End] Then
e.Cancel = True
End If
End If
Next
End If
End Sub
Protected Sub RadScheduler2_AppointmentUpdate(sender As Object, e As AppointmentUpdateEventArgs)
Dim scheduler As RadScheduler = DirectCast(sender, RadScheduler)
If e.ModifiedAppointment.Subject = "Prefered Availability" Then
For Each app As Appointment In scheduler.Appointments.GetAppointmentsInRange(e.ModifiedAppointment.Start, e.ModifiedAppointment.[End])
If app.Subject = "Availability" Then
If app.Start > e.ModifiedAppointment.Start OrElse app.[End] < e.ModifiedAppointment.[End] Then
e.Cancel = True
End If
End If
Next
End If
If e.ModifiedAppointment.Subject = "Availability" Then
For Each app As Appointment In scheduler.Appointments.GetAppointmentsInRange(e.ModifiedAppointment.Start, e.ModifiedAppointment.[End])
If app.Subject = "Prefered Availability" Then
If app.Start < e.ModifiedAppointment.Start OrElse app.[End] > e.ModifiedAppointment.[End] Then
e.Cancel = True
End If
End If
Next
End If
End Sub
End Class