Imports Telerik.WinControls.UI Public Class Form1 Dim promptStart As Boolean = False Public Sub New() ' This call is required by the designer. InitializeComponent() End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim appointmentMappingInfo As AppointmentMappingInfo = New AppointmentMappingInfo() appointmentMappingInfo.BackgroundId = "BackgroundId" appointmentMappingInfo.Description = "Description" appointmentMappingInfo.[End] = "End" appointmentMappingInfo.Location = "Location" appointmentMappingInfo.MasterEventId = "MasterEventId" appointmentMappingInfo.RecurrenceRule = "RecurrenceRule" appointmentMappingInfo.Start = "Start" appointmentMappingInfo.StatusId = "StatusID" appointmentMappingInfo.Summary = "Summary" appointmentMappingInfo.Visible = "Visible" appointmentMappingInfo.ResourceId = "ResourceID" appointmentMappingInfo.FindBySchedulerProperty("ResourceId").ConvertToDataSource = AddressOf ConvertResourceToDataSource appointmentMappingInfo.FindBySchedulerProperty("ResourceId").ConvertToScheduler = AddressOf ConvertResourceToScheduler SchedulerBindingDataSource1.EventProvider.Mapping = appointmentMappingInfo Dim resourceMappingInfo As ResourceMappingInfo = New ResourceMappingInfo() resourceMappingInfo.Id = "ID" resourceMappingInfo.Name = "ResourceName" Me.SchedulerBindingDataSource1.ResourceProvider.Mapping = resourceMappingInfo SchedulerBindingDataSource1.ResourceProvider.DataSource = SchedulerDataDataSet.Resources Me.SchedulerBindingDataSource1.EventProvider.Mapping = appointmentMappingInfo SchedulerBindingDataSource1.EventProvider.DataSource = SchedulerDataDataSet.Appointments RadScheduler1.DataSource = SchedulerBindingDataSource1 Me.RadScheduler1.GroupType = GroupType.Resource 'TODO: This line of code loads data into the 'SchedulerDataDataSet.Resources' table. You can move, or remove it, as needed. Me.ResourcesTableAdapter.Fill(Me.SchedulerDataDataSet.Resources) 'TODO: This line of code loads data into the 'SchedulerDataDataSet.AppointmentsResources' table. You can move, or remove it, as needed. 'Me.AppointmentsResourcesTableAdapter.Fill(Me.SchedulerDataDataSet.AppointmentsResources) 'TODO: This line of code loads data into the 'SchedulerDataDataSet.Appointments' table. You can move, or remove it, as needed. Me.AppointmentsTableAdapter.Fill(Me.SchedulerDataDataSet.Appointments) colourResources() RadScheduler1.GroupType = GroupType.Resource RadScheduler1.ActiveView.ResourcesPerView = 6 cmdSave.Enabled = True promptStart = True End Sub Private Sub colourResources() Me.RadScheduler1.Resources(0).Color = Color.Green Me.RadScheduler1.Resources(1).Color = Color.Lime Me.RadScheduler1.Resources(2).Color = Color.PaleGreen Me.RadScheduler1.Resources(3).Color = Color.Red Me.RadScheduler1.Resources(4).Color = Color.Magenta Me.RadScheduler1.Resources(5).Color = Color.Pink End Sub Private Function ConvertResourceToScheduler(ByVal item As Object) As Object Return New EventId(item) End Function Private Function ConvertResourceToDataSource(ByVal item As Object) As Object Dim resourceId As EventId = TryCast(item, EventId) If Not item Is Nothing AndAlso TypeOf resourceId.KeyValue Is Integer Then Return resourceId.KeyValue End If Return DBNull.Value End Function Private Sub cmdSave_Click(sender As Object, e As EventArgs) Handles cmdSave.Click save1() colourResources() End Sub Private Sub save1() 'RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click 'AppointmentsResourcesTableAdapter.Adapter.AcceptChangesDuringUpdate = False 'Dim deletedRelationRecords As SchedulerDataDataSet.AppointmentsResourcesDataTable = ' TryCast(Me.SchedulerDataDataSet.AppointmentsResources.GetChanges(DataRowState.Deleted), SchedulerDataDataSet.AppointmentsResourcesDataTable) 'Dim newRelationRecords As SchedulerDataDataSet.AppointmentsResourcesDataTable = ' TryCast(Me.SchedulerDataDataSet.AppointmentsResources.GetChanges(DataRowState.Added), SchedulerDataDataSet.AppointmentsResourcesDataTable) 'Dim modifiedRelationRecords As SchedulerDataDataSet.AppointmentsResourcesDataTable = ' TryCast(Me.SchedulerDataDataSet.AppointmentsResources.GetChanges(DataRowState.Modified), SchedulerDataDataSet.AppointmentsResourcesDataTable) Dim newAppointmentRecords As SchedulerDataDataSet.AppointmentsDataTable = TryCast(Me.SchedulerDataDataSet.Appointments.GetChanges(DataRowState.Added), SchedulerDataDataSet.AppointmentsDataTable) Dim deletedAppointmentRecords As SchedulerDataDataSet.AppointmentsDataTable = TryCast(Me.SchedulerDataDataSet.Appointments.GetChanges(DataRowState.Deleted), SchedulerDataDataSet.AppointmentsDataTable) Dim modifiedAppointmentRecords As SchedulerDataDataSet.AppointmentsDataTable = TryCast(Me.SchedulerDataDataSet.Appointments.GetChanges(DataRowState.Modified), SchedulerDataDataSet.AppointmentsDataTable) Try If newAppointmentRecords IsNot Nothing Then Dim newAppointmentIds As Dictionary(Of Integer, Integer) = New Dictionary(Of Integer, Integer)() Dim oldAppointmentIds As Dictionary(Of Object, Integer) = New Dictionary(Of Object, Integer)() For i As Integer = 0 To newAppointmentRecords.Count - 1 oldAppointmentIds.Add(newAppointmentRecords(i), newAppointmentRecords(i).ID) Next AppointmentsTableAdapter.Update(newAppointmentRecords) For i As Integer = 0 To newAppointmentRecords.Count - 1 newAppointmentIds.Add(oldAppointmentIds(newAppointmentRecords(i)), newAppointmentRecords(i).ID) Next 'If newRelationRecords IsNot Nothing Then ' For i As Integer = 0 To newRelationRecords.Count - 1 ' newRelationRecords(i).AppointmentID = newAppointmentIds(newRelationRecords(i).AppointmentID) ' Next 'End If End If 'If deletedRelationRecords IsNot Nothing Then ' AppointmentsResourcesTableAdapter.Update(deletedRelationRecords) 'End If If deletedAppointmentRecords IsNot Nothing Then AppointmentsTableAdapter.Update(deletedAppointmentRecords) End If If modifiedAppointmentRecords IsNot Nothing Then AppointmentsTableAdapter.Update(modifiedAppointmentRecords) End If 'If newRelationRecords IsNot Nothing Then ' AppointmentsResourcesTableAdapter.Update(newRelationRecords) 'End If 'If modifiedRelationRecords IsNot Nothing Then ' AppointmentsResourcesTableAdapter.Update(modifiedRelationRecords) 'End If Me.SchedulerDataDataSet.AcceptChanges() Catch ex As Exception MessageBox.Show(String.Format("An error occurred during the update process:" & vbLf & "{0}", ex.Message)) Finally 'If deletedRelationRecords IsNot Nothing Then ' deletedRelationRecords.Dispose() 'End If 'If newRelationRecords IsNot Nothing Then ' newRelationRecords.Dispose() 'End If 'If modifiedRelationRecords IsNot Nothing Then ' modifiedRelationRecords.Dispose() 'End If End Try End Sub End Class