Eliminazione di una riga dalla tabella

Per eliminare un oggetto DataRow da un oggetto DataTable sono disponibili due metodi: il metodo Remove dell'oggetto DataRowCollection e il metodo Delete dell'oggetto DataRow. Il metodo Remove consente di eliminare un DataRow da DataRowCollection, mentre il metodo Delete consente solo di contrassegnare la riga per l'eliminazione. La rimozione effettiva si verifica nel momento in cui il metodo AcceptChanges viene chiamato dall'applicazione. L'utilizzo di Delete consente di verificare a livello di programmazione le righe contrassegnate per l'eliminazione prima che vengano eliminate effettivamente. Quando una riga è contrassegnata per l'eliminazione, la relativa proprietà RowState è impostata su Deleted.

Quando si utilizza un DataSet o una DataTable insieme a un DataAdapter e a un'origine dati relazionale, utilizzare il metodo Delete di DataRow per rimuovere la riga. Il metodo Delete consente di contrassegnare la riga come Deleted nel DataSet o nella DataTable, ma la riga non viene rimossa. Quando la riga contrassegnata come Deleted viene rilevata dal DataAdapter, viene eseguito il comando DeleteCommand per eliminare tale riga nell'origine dati. È quindi possibile rimuovere la riga in modo definitivo mediante il metodo AcceptChanges. Se si utilizza Remove per eliminare la riga, tale riga verrà rimossa completamente dalla tabella, ma non verrà eliminata nell'origine dati dal DataAdapter.

Il metodo Remove di DataRowCollection accetta DataRow come argomento e ne consente l'eliminazione dall'insieme, come mostrato nell'esempio seguente.

workTable.Rows.Remove(workRow)
[C#]
workTable.Rows.Remove(workRow);

Nell'esempio seguente viene invece mostrato come effettuare la chiamata al metodo Delete in un DataRow per modificarne il RowState e impostarlo su Deleted.

workRow.Delete
[C#]
workRow.Delete();

Se una riga è contrassegnata per l'eliminazione e si chiama il metodo AcceptChanges dell'oggetto DataTable, tale riga verrà rimossa dalla DataTable. Se invece si chiama RejectChanges, il valore relativo al RowState viene impostato di nuovo sul valore precedente al contrassegno come Deleted.

**Nota   **Se il valore per RowState di un DataRow è Added, ovvero la riga è stata appena aggiunta alla tabella, e la riga viene contrassegnata come Deleted, tale riga verrà eliminata dalla tabella.

Vedere anche

Modifica dei dati in una DataTable | Classe DataRow | Classe DataRowCollection | Classe DataTable