Modificar objetos DataView (ADO.NET)
Puede utilizar DataView para agregar, eliminar o modificar filas de datos de la tabla subyacente. La posibilidad de utilizar DataView para modificar los datos de la tabla subyacente se controla estableciendo una de las tres propiedades booleanas de DataView. Dichas propiedades son AllowNew, AllowEdit y AllowDelete. Están establecidas como true de forma predeterminada.
Si AllowNew tiene el valor true, puede utilizar el método AddNew de la DataView para crear una nueva DataRowView. Tenga en cuenta que no se agrega realmente una nueva fila a la DataTable subyacente hasta que se llama al método EndEdit de la DataRowView. Si se llama al método CancelEdit de la DataRowView, se descartará la nueva fila. Tenga en cuenta también que sólo puede modificar una DataRowView cada vez. Si se llama al método AddNew o BeginEdit de la DataRowView mientras hay una fila pendiente, se llamará implícitamente a EndEdit en la fila pendiente. Cuando se llama a EndEdit se aplican los cambios a la DataTable subyacente; más tarde se pueden confirmar o rechazar mediante los métodos AcceptChanges o RejectChanges del objeto DataTable, DataSet o DataRow. Cuando AllowNew tiene el valor false, se iniciará una excepción si llama al método AddNew de la DataRowView.
Si AllowEdit tiene el valor true, puede modificar el contenido de la DataRow mediante DataRowView. Puede confirmar los cambios realizados en la fila subyacente mediante DataRowView.EndEdit o rechazarlos con DataRowView.CancelEdit. Tenga en cuenta que sólo puede modificar una fila cada vez. Si se llama a los métodos AddNew o BeginEdit de la DataRowView mientras hay una fila pendiente, se llamará implícitamente a EndEdit en la fila pendiente. Cuando se llama a EndEdit, los cambios propuestos se ponen en la versión de fila Current de la DataRow subyacente; más tarde se pueden confirmar o rechazar mediante los métodos AcceptChanges o RejectChanges del objeto DataTable, DataSet o DataRow. Cuando AllowEdit tiene el valor false, se iniciará una excepción si intenta modificar un valor de la DataRowView.
Cuando se está modificando una DataRowView existente, seguirán provocándose eventos con los cambios propuestos de la DataTable subyacente. Tenga en cuenta que si llama a EndEdit o a CancelEdit en la DataRow subyacente, los cambios pendientes se aplicarán o se cancelarán independientemente de que se llame o no a EndEdit o a CancelEdit en la DataRowView.
Si AllowDelete tiene el valor true, puede eliminar filas en la DataView mediante el método Delete del objeto DataView o DataRowView y las filas se eliminarán de la DataTable subyacente. Más tarde puede confirmar o rechazar las eliminaciones mediante AcceptChanges o RejectChanges, respectivamente. Cuando AllowDelete tiene el valor false, se iniciará una excepción si llama al método Delete del objeto DataView o DataRowView.
En el siguiente ejemplo de código se deshabilita el uso de DataView para eliminar filas y se agrega una nueva fila a la tabla subyacente mediante la DataView.
Dim custTable As DataTable = custDS.Tables("Customers")
Dim custView As DataView = custTable.DefaultView
custView.Sort = "CompanyName"
custView.AllowDelete = False
Dim newDRV As DataRowView = custView.AddNew()
newDRV("CustomerID") = "ABCDE"
newDRV("CompanyName") = "ABC Products"
newDRV.EndEdit()
DataTable custTable = custDS.Tables["Customers"];
DataView custView = custTable.DefaultView;
custView.Sort = "CompanyName";
custView.AllowDelete = false;
DataRowView newDRV = custView.AddNew();
newDRV["CustomerID"] = "ABCDE";
newDRV["CompanyName"] = "ABC Products";
newDRV.EndEdit();