IEditableObject Interface
.NET Framework (current version)
Provides functionality to commit or rollback changes to an object that is used as a data source.
Assembly: System (in System.dll)
| Name | Description | |
|---|---|---|
![]() | BeginEdit() | Begins an edit on an object. |
![]() | CancelEdit() | Discards changes since the last BeginEdit call. |
![]() | EndEdit() | Pushes changes since the last BeginEdit or IBindingList.AddNew call into the underlying object. |
This interface is typically used to capture the BeginEdit, EndEdit, and CancelEdit semantics of a DataRowView.
The following sample provides a simple implementation of the IEditableObject interface. The Customer class stores customer information and can be used as a collection for a customer database. This sample assumes that you have used the CustomerList class that can be found in sample in the IBindingList class.
public class Customer : IEditableObject { struct CustomerData { internal string id ; internal string firstName ; internal string lastName ; } private CustomersList parent; private CustomerData custData; private CustomerData backupData; private bool inTxn = false; // Implements IEditableObject void IEditableObject.BeginEdit() { Console.WriteLine("Start BeginEdit"); if (!inTxn) { this.backupData = custData; inTxn = true; Console.WriteLine("BeginEdit - " + this.backupData.lastName); } Console.WriteLine("End BeginEdit"); } void IEditableObject.CancelEdit() { Console.WriteLine("Start CancelEdit"); if (inTxn) { this.custData = backupData; inTxn = false; Console.WriteLine("CancelEdit - " + this.custData.lastName); } Console.WriteLine("End CancelEdit"); } void IEditableObject.EndEdit() { Console.WriteLine("Start EndEdit" + this.custData.id + this.custData.lastName); if (inTxn) { backupData = new CustomerData(); inTxn = false; Console.WriteLine("Done EndEdit - " + this.custData.id + this.custData.lastName); } Console.WriteLine("End EndEdit"); } public Customer(string ID) : base() { this.custData = new CustomerData(); this.custData.id = ID; this.custData.firstName = ""; this.custData.lastName = ""; } public string ID { get { return this.custData.id; } } public string FirstName { get { return this.custData.firstName; } set { this.custData.firstName = value; this.OnCustomerChanged(); } } public string LastName { get { return this.custData.lastName; } set { this.custData.lastName = value; this.OnCustomerChanged(); } } internal CustomersList Parent { get { return parent; } set { parent = value ; } } private void OnCustomerChanged() { if (!inTxn && Parent != null) { Parent.CustomerChanged(this); } } public override string ToString() { StringWriter sb = new StringWriter(); sb.Write(this.FirstName); sb.Write(" "); sb.Write(this.LastName); return sb.ToString(); } }
Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Show:
