Eliminazione di DataRow

È possibile usare due metodi per eliminare un oggetto DataRow da un oggetto DataTable: 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 Delete.

Delete e Remove non devono essere chiamato in un ciclo foreach durante l'iterazione tramite un oggetto DataRowCollection. Delete e Remove non modificano lo stato della raccolta.

Quando si usa un DataSet o una DataTable insieme a un DataAdapter e a un'origine dati relazionale, usare 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 metodo DeleteCommand per eliminare tale riga nell'origine dati. Sarà quindi possibile rimuovere la riga in modo definitivo mediante il metodo AcceptChanges. Se si usa 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 dalla raccolta, come mostrato nell'esempio seguente.

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

Nell'esempio seguente viene invece illustrato come effettuare la chiamata al metodo Delete in un DataRow per modificare il valore relativo a RowState e impostarlo su Deleted.

workRow.Delete  
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 della riga verrà impostato di nuovo sul valore che presentava prima di essere contrassegnata come Deleted.

Nota

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

Vedi anche