Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Interfaz IEditableObject

 

Publicado: octubre de 2016

Proporciona funcionalidad para confirmar o deshacer los cambios realizados a un objeto que se utiliza como origen de datos.

Espacio de nombres:   System.ComponentModel
Ensamblado:  System (en System.dll)

public interface IEditableObject

NombreDescripción
System_CAPS_pubmethodBeginEdit()

Comienza una operación de edición en un objeto.

System_CAPS_pubmethodCancelEdit()

Descarta los cambios desde la última BeginEdit llamar.

System_CAPS_pubmethodEndEdit()

Aplica los cambios realizados desde la última BeginEdit o IBindingList.AddNew llamar al objeto subyacente.

Esta interfaz se utiliza normalmente para capturar el BeginEdit, EndEdit, y CancelEdit semántica de un DataRowView.

El ejemplo siguiente proporciona una implementación simple de la IEditableObject interfaz. La Customer clase almacena la información de cliente y puede utilizarse como una colección para una base de datos de cliente. En este ejemplo se supone que ha usado la CustomerList clase que puede encontrarse en el ejemplo en el IBindingList clase.

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();
	}   
}

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: