Eliminación de DataRow

Existen dos métodos para eliminar un objeto DataRow de un objeto DataTable: el método Remove del objeto DataRowCollection y el método Delete del objeto DataRow. Aunque el método Remove elimine un objeto DataRow de DataRowCollection, el método Delete solo marca la fila que se deben eliminar. La eliminación propiamente dicha se produce cuando la aplicación llama al método AcceptChanges. Con Delete, se puede comprobar mediante programa qué filas están marcadas para eliminación antes de quitarlas realmente. Cuando una fila está marcada para eliminación, la propiedad RowState se establece en Delete.

No se debe llamar a Delete ni a Remove en un bucle foreach durante una iteración a través de un objeto DataRowCollection . Ni Delete ni Remove modifican el estado de la colección.

Si utiliza un DataSet o una DataTable en combinación con un DataAdapter y un origen de datos relacional, utilice el método Delete de la DataRow para eliminar la fila. El método Delete marca la fila como Deleted en DataSet o DataTable pero no la elimina. En su lugar, cuando el DataAdapter encuentra una fila marcada como Deleted, ejecuta el método DeleteCommand para eliminar la fila en el origen de datos. A continuación se puede quitar la fila permanentemente mediante el método AcceptChanges. Si utiliza Remove para eliminar la fila, ésta desaparecerá por completo de la tabla, pero DataAdapter no eliminará la fila del origen de datos.

El método Remove de DataRowCollection toma una DataRow como argumento y la elimina de la colección, como se muestra en el ejemplo siguiente.

workTable.Rows.Remove(workRow)  
workTable.Rows.Remove(workRow);  

Por el contrario, en el siguiente ejemplo se muestra cómo se llama al método Delete en una DataRow para cambiar RowState a Deleted.

workRow.Delete  
workRow.Delete();  

Si una fila está marcada para eliminación y se llama al método AcceptChanges del objeto DataTable, la fila se eliminará de DataTable. Por el contrario, si se llama a RejectChanges, el estado RowState de la fila vuelve a ser el que era antes de que se marcara como Deleted.

Nota

Si el estado RowState de DataRow es Added, lo que quiere decir que se acaba de agregar a la tabla y, a continuación, se marca como Deleted, se elimina de la tabla.

Consulte también