Hello friends,
I need any change in the schedule is saved automatically. I am building the project in vb.net. In my code below that the problem happens when I save a new appointment, the appointment is saved twice. Appear when two close and open again the agenda. Can you help me? Below is the code:
Private Sub FrmPortal_Load(sender As Object, e As EventArgs) Handles Me.Load
AddHandler Me.RadScheduler1.Appointments.CollectionChanged, AddressOf Appointments_CollectionChanged
Me.RadScheduler1.ActiveView.StartDate = Date.Now
End Sub
Private Function Appointments_CollectionChanged(ByVal sender As Object, ByVal e As NotifyCollectionChangedEventArgs) As String
Select Case e.Action
Case NotifyCollectionChangedAction.Add
CollectionChangedCompleted("Add")
Case NotifyCollectionChangedAction.Batch
CollectionChangedCompleted("Batch")
Case NotifyCollectionChangedAction.ItemChanged
CollectionChangedCompleted("ItemChanged")
Case NotifyCollectionChangedAction.ItemChanging
CollectionChangedCompleted("ItemChanging")
Case NotifyCollectionChangedAction.Move
CollectionChangedCompleted("Move")
Case NotifyCollectionChangedAction.Remove
CollectionChangedCompleted("Remove")
Case NotifyCollectionChangedAction.Replace
CollectionChangedCompleted("Replace")
Case NotifyCollectionChangedAction.Reset
CollectionChangedCompleted("Reset")
End Select
Return String.Empty
End Function
Private Function CollectionChangedCompleted(ByVal action As String) As Boolean
If RadScheduler1.Appointments.IsUpdated Then
performAction(action)
Return True
Else
Return False
End If
Return False
End Function
Private Function performAction(ByVal action As String) As Boolean
Select Case action
Case "Add"
Call SalvarAgenda()
Case "Batch"
Call SalvarAgenda()
Case "ItemChanged"
Call SalvarAgenda()
Case "ItemChanging"
'Call SalvarAgenda()
Case "Move"
Call SalvarAgenda()
Case "Remove"
Call SalvarAgenda()
Case "Replace"
Call SalvarAgenda()
Case "Reset"
Call SalvarAgenda()
End Select
End Function
Sub SalvarAgenda()
AppointmentsTableAdapter.Adapter.AcceptChangesDuringUpdate = False
Dim deletedChildRecords As ERPDataSet.AppointmentsResourcesDataTable = TryCast(Me.ERPDataSet.AppointmentsResources.GetChanges(DataRowState.Deleted), ERPDataSet.AppointmentsResourcesDataTable)
Dim newChildRecords As ERPDataSet.AppointmentsResourcesDataTable = TryCast(Me.ERPDataSet.AppointmentsResources.GetChanges(DataRowState.Added), ERPDataSet.AppointmentsResourcesDataTable)
Dim modifiedChildRecords As ERPDataSet.AppointmentsResourcesDataTable = TryCast(Me.ERPDataSet.AppointmentsResources.GetChanges(DataRowState.Modified), ERPDataSet.AppointmentsResourcesDataTable)
Try
If deletedChildRecords IsNot Nothing Then
AppointmentsResourcesTableAdapter.Update(deletedChildRecords)
End If
AppointmentsTableAdapter.Update(Me.ERPDataSet.Appointments)
If newChildRecords IsNot Nothing Then
AppointmentsResourcesTableAdapter.Update(newChildRecords)
End If
If modifiedChildRecords IsNot Nothing Then
AppointmentsResourcesTableAdapter.Update(modifiedChildRecords)
End If
Me.ERPDataSet.AcceptChanges()
Catch ex As Exception
' MessageBox.Show(String.Format("An error occurred during the update process:" & vbLf & "{0}", ex.Message))
Finally
If deletedChildRecords IsNot Nothing Then
deletedChildRecords.Dispose()
End If
If newChildRecords IsNot Nothing Then
newChildRecords.Dispose()
End If
If modifiedChildRecords IsNot Nothing Then
modifiedChildRecords.Dispose()
End If
End Try
End Sub
I need any change in the schedule is saved automatically. I am building the project in vb.net. In my code below that the problem happens when I save a new appointment, the appointment is saved twice. Appear when two close and open again the agenda. Can you help me? Below is the code:
Private Sub FrmPortal_Load(sender As Object, e As EventArgs) Handles Me.Load
AddHandler Me.RadScheduler1.Appointments.CollectionChanged, AddressOf Appointments_CollectionChanged
Me.RadScheduler1.ActiveView.StartDate = Date.Now
End Sub
Private Function Appointments_CollectionChanged(ByVal sender As Object, ByVal e As NotifyCollectionChangedEventArgs) As String
Select Case e.Action
Case NotifyCollectionChangedAction.Add
CollectionChangedCompleted("Add")
Case NotifyCollectionChangedAction.Batch
CollectionChangedCompleted("Batch")
Case NotifyCollectionChangedAction.ItemChanged
CollectionChangedCompleted("ItemChanged")
Case NotifyCollectionChangedAction.ItemChanging
CollectionChangedCompleted("ItemChanging")
Case NotifyCollectionChangedAction.Move
CollectionChangedCompleted("Move")
Case NotifyCollectionChangedAction.Remove
CollectionChangedCompleted("Remove")
Case NotifyCollectionChangedAction.Replace
CollectionChangedCompleted("Replace")
Case NotifyCollectionChangedAction.Reset
CollectionChangedCompleted("Reset")
End Select
Return String.Empty
End Function
Private Function CollectionChangedCompleted(ByVal action As String) As Boolean
If RadScheduler1.Appointments.IsUpdated Then
performAction(action)
Return True
Else
Return False
End If
Return False
End Function
Private Function performAction(ByVal action As String) As Boolean
Select Case action
Case "Add"
Call SalvarAgenda()
Case "Batch"
Call SalvarAgenda()
Case "ItemChanged"
Call SalvarAgenda()
Case "ItemChanging"
'Call SalvarAgenda()
Case "Move"
Call SalvarAgenda()
Case "Remove"
Call SalvarAgenda()
Case "Replace"
Call SalvarAgenda()
Case "Reset"
Call SalvarAgenda()
End Select
End Function
Sub SalvarAgenda()
AppointmentsTableAdapter.Adapter.AcceptChangesDuringUpdate = False
Dim deletedChildRecords As ERPDataSet.AppointmentsResourcesDataTable = TryCast(Me.ERPDataSet.AppointmentsResources.GetChanges(DataRowState.Deleted), ERPDataSet.AppointmentsResourcesDataTable)
Dim newChildRecords As ERPDataSet.AppointmentsResourcesDataTable = TryCast(Me.ERPDataSet.AppointmentsResources.GetChanges(DataRowState.Added), ERPDataSet.AppointmentsResourcesDataTable)
Dim modifiedChildRecords As ERPDataSet.AppointmentsResourcesDataTable = TryCast(Me.ERPDataSet.AppointmentsResources.GetChanges(DataRowState.Modified), ERPDataSet.AppointmentsResourcesDataTable)
Try
If deletedChildRecords IsNot Nothing Then
AppointmentsResourcesTableAdapter.Update(deletedChildRecords)
End If
AppointmentsTableAdapter.Update(Me.ERPDataSet.Appointments)
If newChildRecords IsNot Nothing Then
AppointmentsResourcesTableAdapter.Update(newChildRecords)
End If
If modifiedChildRecords IsNot Nothing Then
AppointmentsResourcesTableAdapter.Update(modifiedChildRecords)
End If
Me.ERPDataSet.AcceptChanges()
Catch ex As Exception
' MessageBox.Show(String.Format("An error occurred during the update process:" & vbLf & "{0}", ex.Message))
Finally
If deletedChildRecords IsNot Nothing Then
deletedChildRecords.Dispose()
End If
If newChildRecords IsNot Nothing Then
newChildRecords.Dispose()
End If
If modifiedChildRecords IsNot Nothing Then
modifiedChildRecords.Dispose()
End If
End Try
End Sub