Example #1
0
        /// <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);
            }
        }
Example #2
0
        /// <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);
        }