I am trying to delete a child object from an editable list. I have some business logic that I want executed when a user tries to 'delete' a record that checks whether or not the record is in use (referential integrity).
However, given the code example below, my overridden methods are not being called. Am I doing something wrong? Is there a better way to do this?
Example: 'In the BLL... Public Class MyListClass Inherits MyBaseListClass(Of MyListClass, MyChildClass) 'Overridden to get item by key value Default Public Overloads ReadOnly Property Item(ByVal keyValue As Object) As MyChildClass Get For Each child As MyChildClass In Me If child.KeyProperty.Equals(keyValue) Then Return child End If Next Return Nothing End Get End Property 'Overridden to implement business logic Public Overloads Function Remove(ByVal child As MyChildClass) As Boolean If MyChildClass.CanDeleteRecord(child.KeyProperty) MyBase.Remove(child) Else Throw New BusinessException(ExceptionMessages.GetString("RecordCannotBeDeleted")) End If End Function
'Overridden to implement authorization logic Public Overloads Function Remove(ByVal keyValue As Object) As Boolean If MyChildClass.CanDeleteObject(keyValue) Then Remove(Me(ageGroupNo)) Else Throw New System.UnauthorizedAccessException(ExceptionMessages.GetString("UnauthorizedDeleteAccess", "MyChildClass")) End If End Function '...other code End Class
'In the UIL...
'Class for editing data grids Public Class UserControlListBase(Of T As MyBaseListClass(Of T, C), C As MyBaseClass(Of C)) Inherits UserControl
'Holds the current business object Protected Property BusinessObject() As T Get Dim result As Object = Nothing Try result = CType(Session("CurrentBO"), T) Catch ex As Exception result = Nothing End Try Return result End Get Set(ByVal value As T) Session("CurrentBO") = value End Set End Property
'Occurs when a user chooses to delete a record in the grid Protected Sub dataGrid_RowDeleting(ByVal sender As Object, ByVal e As DeletingEventArgs) Try Dim keyValue As Object = e.Keys(Me._keyFieldName) Dim child As C = Me.BusinessObject(keyValue)
'This should throw an exception stating that the record cannot be deleted Me.BusinessObject.Remove(child) Catch ex As Exception e.Cancel = True HandleException(ex) End Try End Sub '...other code End Class
Copyright (c) Marimer LLC