QuoteReplyTopic: Deleting an Entity In Custom BindingList Posted: 25-May-2011 at 12:53pm
I am trying to be clever and creating my own BindingList, which handles the adding/deleting of entity logic. That way, when I bind it to simple UltraGrids (similar to DataGrids), they should delete themselves. See http://www.ideablade.com/forum/forum_posts.asp?TID=2712&title=editable-grid-controls for some additional info. The problem is, whenever I try to delete the entity via the aspect, I get an error I don't really understand.
Here is the key parts of the code:
''' <summary> ''' This class is a wrapper around BindingList, that is incorporated directly into the the EntityManager for new/delete operations. ''' </summary> ''' <typeparam name="T"></typeparam> Public Class EntityBindingList(Of T) Inherits BindingList(Of T)
''' <summary> ''' Removes the item at the specified index. ''' </summary> ''' <param name="index">The zero-based index of the item to remove.</param> ''' <exception cref="T:System.NotSupportedException">You are removing a newly added item and <see cref="P:System.ComponentModel.IBindingList.AllowRemove" /> is set to false. </exception> Protected Overrides Sub RemoveItem(ByVal index As Integer) OnRemovingItem(New RemoveItemEventArgs(Me(index)))
' Convert this to a entity so we can access the EntityAspect Dim entityToRemove As Entity = TryCast(Me(index), IdeaBlade.EntityModel.Entity) ' Flag the entity to be deleted when the EntityManager is saved entityToRemove.EntityAspect.Delete()
MyBase.RemoveItem(index) End Sub
End Class
When stepping through the code, as soon as I try to call EntityAspect.Delete(), I get "Unable to delete the row: Cannot call BeginEdit() on Deleted entities." Which makes no sense since I can see through the watch window, it is still flagged as "Unchanged".
I tried to not Delete it, thinking it might change it under the hood, but no luck.
So what does the error mean? Or even better, how do I fix it?
Before deleting an entity, it's good practice to remove it from any bound lists. What happens if you move MyBase.RemoveItem(index) before entityToRemove.EntityAspect.Delete()?
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum