Back to Devexpress

IObjectSpace.RemoveFromModifiedObjects(Object) Method

expressappframework-devexpress-dot-expressapp-dot-iobjectspace-dot-removefrommodifiedobjects-x28-system-dot-object-x29.md

latest4.7 KB
Original Source

IObjectSpace.RemoveFromModifiedObjects(Object) Method

Removes the specified object from the list of objects to be committed.

Namespace : DevExpress.ExpressApp

Assembly : DevExpress.ExpressApp.v25.2.dll

NuGet Package : DevExpress.ExpressApp

Declaration

csharp
void RemoveFromModifiedObjects(
    object obj
)
vb
Sub RemoveFromModifiedObjects(
    obj As Object
)

Parameters

NameTypeDescription
objObject

An object to be removed from the list of modified objects.

|

Remarks

The following code shows how to manually save child collection changes made in the parent Detail View:

csharp
using DevExpress.ExpressApp;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using YourSolutionName.Module.BusinessObjects;

namespace YourSolutionName.Module.Controllers {
    public class MyViewController : ObjectViewController<DetailView, Parent> {
        List<Child> detailObjectsCache = new List<Child>();
        protected override void OnActivated() {
            base.OnActivated();
            ObjectSpace.CustomCommitChanges += ObjectSpace_CustomCommitChanges;
            ObjectSpace.Committing += ObjectSpace_Committing;
            ObjectSpace.Committed += ObjectSpace_Committed;
            ObjectSpace.Reloaded += ObjectSpace_Reloaded;
        }
        protected override void OnDeactivated() {
            ObjectSpace.CustomCommitChanges -= ObjectSpace_CustomCommitChanges;
            ObjectSpace.Committing -= ObjectSpace_Committing;
            ObjectSpace.Committed -= ObjectSpace_Committed;
            ObjectSpace.Reloaded -= ObjectSpace_Reloaded;
            base.OnDeactivated();
        }
        void ObjectSpace_Reloaded(object sender, EventArgs e) {
            detailObjectsCache.Clear();
        }
        void ObjectSpace_Committed(object sender, EventArgs e) {
            detailObjectsCache.Clear();
        }
        void ObjectSpace_Committing(object sender, CancelEventArgs e) {
            IObjectSpace os = (IObjectSpace)sender;
            for (int i = os.ModifiedObjects.Count - 1; i >= 0; i--) {
                object item = os.ModifiedObjects[i];
                if (typeof(Child).IsAssignableFrom(item.GetType())) {
                    detailObjectsCache.Add(item as Child);
                    os.RemoveFromModifiedObjects(item);
                }
            }
        }
        void ObjectSpace_CustomCommitChanges(object sender, HandledEventArgs e) {
            // Implement custom logic to save Detail objects here. 
            foreach (Child detailObject in detailObjectsCache) {
                //...  
            }
        }
    }
}

The following code snippet (auto-collected from DevExpress Examples) contains a reference to the RemoveFromModifiedObjects(Object) method.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

XAF_Non-Persistent-Objects-Edit-Linked-Persistent-Objects-Demo/CS/EFCore/NonPersistentEditEF/NonPersistentEditEF.Module/Controllers/NonPersistentObjectActivatorController.cs#L40

csharp
var obj = objectSpace.CreateObject(objectType);
objectSpace.RemoveFromModifiedObjects(obj);
var detailView = Application.CreateDetailView(objectSpace, shortcut.ViewId, true, obj);

See Also

EFCoreObjectSpace.RemoveFromModifiedObjects(Object)

XPObjectSpace.RemoveFromModifiedObjects(Object)

IObjectSpace Interface

IObjectSpace Members

DevExpress.ExpressApp Namespace