Eliminazione di DataRow

Esistono due metodi che è possibile utilizzare per eliminare un DataRow oggetto da un DataTable oggetto: il metodo Remove dell' DataRowCollection oggetto e il Delete metodo dell'oggetto DataRow . Mentre il Remove metodo elimina un DataRow da DataRowCollection, il Delete metodo contrassegna solo la riga per l'eliminazione. La rimozione effettiva si verifica quando l'applicazione chiama il metodo AcceptChanges . 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 DataSet un oggetto o DataTable insieme a un DataAdapter e a un'origine dati relazionale, usare il metodo Delete del DataRow per rimuovere la riga. Il metodo Delete contrassegna la riga come eliminata nel DataSet o DataTable , ma non la rimuove. Al contrario, quando DataAdapter rileva una riga contrassegnata come eliminata, viene eseguito il metodo DeleteCommand per eliminare la riga nell'origine dati. La riga può quindi essere rimossa definitivamente usando il metodo AcceptChanges . Se si utilizza Rimuovi per eliminare la riga, la riga viene rimossa interamente dalla tabella, ma l'oggetto DataAdapter non eliminerà la riga nell'origine dati.

Il metodo Remove di DataRowCollection accetta un DataRow come argomento e lo rimuove dalla raccolta, come illustrato nell'esempio seguente.

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

Al contrario, nell'esempio seguente viene illustrato come chiamare il metodo Delete su un DataRow per modificare il valore di RowState in Deleted.

workRow.Delete  
workRow.Delete();  

Se una riga è contrassegnata per l'eliminazione e si chiama il metodo AcceptChanges dell'oggetto DataTable , la riga viene rimossa dalla DataTable. Al contrario, se si chiama RejectChanges, il RowState della riga ritorna a quello che era prima che venisse contrassegnato come eliminato.

Nota

Se viene aggiunto il valore RowState di un DataRow , ovvero è stato appena aggiunto alla tabella e viene quindi contrassegnato come eliminato, viene rimosso dalla tabella.

Vedi anche