IEditableObject Interface


Provides functionality to commit or rollback changes to an object that is used as a data source.

Namespace:   System.ComponentModel
Assembly:  System (in System.dll)

Public Interface IEditableObject


Begins an edit on an object.


Discards changes since the last BeginEdit call.


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
    Implements IEditableObject

    Structure CustomerData
        Friend id As String
        Friend firstName As String
        Friend lastName As String
    End Structure 

    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 

    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 

    Sub EndEdit() Implements IEditableObject.EndEdit
        Console.WriteLine(("Start EndEdit" + + Me.custData.lastName))
        If inTxn Then
            backupData = New CustomerData()
            inTxn = False
            Console.WriteLine(("Done EndEdit - " + + Me.custData.lastName))
        End If
        Console.WriteLine("End EndEdit")
    End Sub 

    Public Sub New(ByVal ID As String)
        Me.custData = New CustomerData() = ID
        Me.custData.firstName = ""
        Me.custData.lastName = ""
    End Sub 

    Public ReadOnly Property ID() As String
        End Get
    End Property

    Public Property FirstName() As String
            Return Me.custData.firstName
        End Get
        Set(ByVal Value As String)
            Me.custData.firstName = Value
        End Set
    End Property

    Public Property LastName() As String
            Return Me.custData.lastName
        End Get
        Set(ByVal Value As String)
            Me.custData.lastName = Value
        End Set
    End Property

    Friend Property Parents() As CustomersList
            Return Parent
        End Get
        Set(ByVal Value As CustomersList)
            parent = Value
        End Set
    End Property

    Private Sub OnCustomerChanged()
        If Not inTxn And (Parent IsNot Nothing) Then
        End If
    End Sub 

    Public Overrides Function ToString() As String
        Dim sb As New StringWriter()
        sb.Write(" ")
        Return sb.ToString()
    End Function 
End Class

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top