public interface IEditableObject
|
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 System.ComponentModel.IBindingList (not supported on the shared source CLI) 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; } } public string LastName { get { return this.custData.lastName; } set { this.custData.lastName = value; } } internal CustomersList Parent { get { return parent; } set { parent = value ; } } private void OnCustomerChanged() { if (!inTxn && Parent != null) { Parent.CustomerChanged(this); } }
BeginEdit | Begins an edit on an object. |
CancelEdit | Discards changes since the last IEditableObject.BeginEdit call. |
EndEdit | Pushes changes since the last IEditableObject.BeginEdit or IBindingList.AddNew call into the underlying object. |
void BeginEdit(); |
If IEditableObject.BeginEdit is called on an object that is already being edited, the second and subsequent calls are ignored.
void CancelEdit(); |
This method will be ignored if called on an object that is not being edited.
void EndEdit(); |
This method will be ignored if called on an object that is not being edited.