/// <summary> /// Fires the <see cref="ObjectContainerDataSourceView.Deleting"/> event. /// </summary> /// <param name="e">The event associated data.</param> protected virtual void OnDeleting(ObjectContainerDataSourceDeletingEventArgs e) { EventHandler <ObjectContainerDataSourceDeletingEventArgs> handler = base.Events[DeletingEventKey] as EventHandler <ObjectContainerDataSourceDeletingEventArgs>; if (handler != null) { handler(this, e); } }
/// <summary> /// Performs a delete operation on the list of data that the <see cref="DataSourceView"/> object represents. /// </summary> /// <param name="keys">An <see cref="IDictionary"/> of object or row keys to be deleted by /// the <see cref="DataSourceView.ExecuteDelete(System.Collections.IDictionary,System.Collections.IDictionary)"/> /// operation.</param> /// <param name="oldValues">An <see cref="System.Collections.IDictionary"/> of name/value pairs that represent data elements and their original values.</param> /// <returns>The number of items that were deleted from the underlying data storage.</returns> protected override int ExecuteDelete(IDictionary keys, IDictionary oldValues) { Guard.CollectionNotNullNorEmpty(keys, String.Format(CultureInfo.CurrentCulture, Resources.NoKeysSpecified), "keys"); ObjectContainerDataSourceDeletingEventArgs deletingEventArgs = new ObjectContainerDataSourceDeletingEventArgs(DictionaryHelper.GetReadOnlyDictionary(keys), oldValues); OnDeleting(deletingEventArgs); if (deletingEventArgs.Cancel) { return(0); } int rowsAffected; object instance = FindInstance(keys); if (instance == null) { rowsAffected = 0; } else { Data.Remove(instance); rowsAffected = 1; } instance = CreateInstance(); TypeDescriptionHelper.BuildInstance(oldValues, instance); TypeDescriptionHelper.BuildInstance(keys, instance); OnDataSourceViewChanged(EventArgs.Empty); ObjectContainerDataSourceStatusEventArgs deletedEventArgs = new ObjectContainerDataSourceStatusEventArgs(instance, rowsAffected); OnDeleted(deletedEventArgs); return(rowsAffected); }