2012-02-20 11 views
17

Ho un problema con il mio sito Web asp.net, sto cercando di copiare un datarow da un datatable ad un altro datatable, ma ogni volta che sto cercando di farlo sto ricevendo un errore:Questa riga appartiene già a un altro tavolo

This row already belongs to another table. 

risposta

17

Come afferma errore, un'istanza DataRow è legata al suo possedere DataTable e non può essere aggiunto a un altro tavolo.

Utilizzare invece ImportRow() method per creare una copia effettiva della riga.

+1

Ok, Microsoft ... ti rendi conto che è il caso, perché no, invece di lanciare un'eccezione compiaciuta, si esegue ImportaRow in quel caso per noi? * sigh * – SeanKendle

+1

@SeanKendle: No; aver aggiunto a volte fare una copia della riga senza indicazioni sarebbe una pessima idea. – SLaks

+0

C'è un caso in cui dire "aggiungi riga" * non significa * fare una copia? Oppure, dove è possibile utilizzare anche aggiungere una riga se è già membro di un altro tavolo? – SeanKendle

4

Per esempio

È necessario creare un nuovo con i valori dr prima. A DataRow può appartenere solo a un singolo DataTable.

È anche possibile utilizzare Aggiungi che prende un array di valori:

myTable.Rows.Add(dr.ItemArray) 

O probabilmente ancora meglio:

myTable.ImportRow(dr); 

Link

Problemi correlati