Provides functionality to commit or rollback changes to an object that is used as a data source.
For a list of all members of this type, see IEditableObject Members.
[Visual Basic] Public Interface IEditableObject [C#] public interface IEditableObject [C++] public __gc __interface IEditableObject [JScript] public interface IEditableObject
| Class | Description |
|---|---|
| DataRowView | Represents a customized view of a DataRow exposed as a fully featured Windows Forms control. |
This interface is typically used to capture the BeginEdit, EndEdit, and CancelEdit semantics of a DataRowView.
[Visual Basic, C#, C++] 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.
[Visual Basic] Public Class Customer Implements IEditableObject Structure CustomerData Friend id As String Friend firstName As String Friend lastName As String End Structure 'CustomerData Public parent As CustomersList Private custData As CustomerData Private backupData As CustomerData Private inTxn As Boolean = False ' Implements IEditableObject Sub BeginEdit() Implements IEditableObject.BeginEdit Console.WriteLine("Start BeginEdit") If Not inTxn Then Me.backupData = custData inTxn = True Console.WriteLine(("BeginEdit - " + Me.backupData.lastName)) End If Console.WriteLine("End BeginEdit") End Sub 'IEditableObject.BeginEdit Sub CancelEdit() Implements IEditableObject.CancelEdit Console.WriteLine("Start CancelEdit") If inTxn Then Me.custData = backupData inTxn = False Console.WriteLine(("CancelEdit - " + Me.custData.lastName)) End If Console.WriteLine("End CancelEdit") End Sub 'IEditableObject.CancelEdit Sub EndEdit() Implements IEditableObject.EndEdit Console.WriteLine(("Start EndEdit" + Me.custData.id + Me.custData.lastName)) If inTxn Then backupData = New CustomerData() inTxn = False Console.WriteLine(("Done EndEdit - " + Me.custData.id + Me.custData.lastName)) End If Console.WriteLine("End EndEdit") End Sub 'IEditableObject.EndEdit Public Sub New(ByVal ID As String) Me.custData = New CustomerData() Me.custData.id = ID Me.custData.firstName = "" Me.custData.lastName = "" End Sub 'New Public ReadOnly Property ID() As String Get Return Me.custData.id End Get End Property Public Property FirstName() As String Get Return Me.custData.firstName End Get Set(ByVal Value As String) Me.custData.firstName = Value End Set End Property Public Property LastName() As String Get Return Me.custData.lastName End Get Set(ByVal Value As String) Me.custData.lastName = Value End Set End Property Friend Property Parents() As CustomersList Get Return Parent End Get Set(ByVal Value As CustomersList) parent = Value End Set End Property Private Sub OnCustomerChanged() If Not inTxn And Not (Parent Is Nothing) Then Parent.CustomerChanged(Me) End If End Sub 'OnCustomerChanged [C#] 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); } } [C++] public __gc class Customer : public IEditableObject { private: __gc struct CustomerData { private public: String* id; String* firstName; String* lastName; }; CustomersList* parent; CustomerData* custData; CustomerData* backupData; bool inTxn; // Implements IEditableObject void IEditableObject::BeginEdit() { Console::WriteLine(S"Start BeginEdit"); if (!inTxn) { this->backupData = custData; inTxn = true; Console::WriteLine(S"BeginEdit - {0}", this->backupData->lastName); } Console::WriteLine(S"End BeginEdit"); } void IEditableObject::CancelEdit() { Console::WriteLine(S"Start CancelEdit"); if (inTxn) { this->custData = backupData; inTxn = false; Console::WriteLine(S"CancelEdit - {0}", this->custData->lastName); } Console::WriteLine(S"End CancelEdit"); } void IEditableObject::EndEdit() { Console::WriteLine(S"Start EndEdit{0}{1}", this->custData->id, this->custData->lastName); if (inTxn) { backupData = new CustomerData(); inTxn = false; Console::WriteLine(S"Done EndEdit - {0}{1}", this->custData->id, this->custData->lastName); } Console::WriteLine(S"End EndEdit"); } // void OnCustomerChanged() // { // if (!inTxn && Parent != 0) // { // Parent->CustomerChanged(this); // } // } public: Customer(String* ID) { this->custData = new CustomerData(); this->custData->id = ID; this->custData->firstName = S""; this->custData->lastName = S""; inTxn = false; } __property String* get_ID() { return this->custData->id; } __property String* get_FirstName() { return this->custData->firstName; } __property void set_FirstName( String* value ) { this->custData->firstName = value; } __property String* get_LastName() { return this->custData->lastName; } __property void set_LastName( String* value ) { this->custData->lastName = value; } private public: __property CustomersList* get_Parent() { return parent; } __property void set_Parent( CustomersList* value ) { parent = value; }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Namespace: System.ComponentModel
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework - Windows CE .NET
Assembly: System (in System.dll)