2012-02-20 26 views
17

Tengo un problema con mi sitio web asp.net, estoy tratando de copiar un datarow de una tabla de datos a otra tabla de datos, pero cada vez que trato de hacerlo me aparece un error:Esta fila ya pertenece a otra tabla

This row already belongs to another table. 

Respuesta

17

Como los estados de error, una instancia DataRow está ligado a su propietaria DataTable y no se puede añadir a otra mesa.

En su lugar, utilice ImportRow() method para hacer una copia real de la fila.

+1

Ok, Microsoft ... se da cuenta de que es la caso, ¿por qué no, en lugar de arrojar una excepción presumida, ejecutas ImportRow en ese caso para nosotros? * suspiro * – SeanKendle

+1

@SeanKendle: No; tener agregar a veces hacer una copia de la fila sin indicación sería una muy mala idea. – SLaks

+0

¿Hay algún caso en el que decir "agregar fila" * no signifique * hacer una copia? O, ¿dónde puedes incluso agregar una fila si ya es miembro de otra mesa? – SeanKendle

4

Por ejemplo

Es necesario crear un nuevo con los valores de dr primero. Un DataRow solo puede pertenecer a un solo DataTable.

Puede también utilizar Agregar que tiene una matriz de valores:

myTable.Rows.Add(dr.ItemArray) 

o probablemente aún mejor:

myTable.ImportRow(dr); 

Link

Cuestiones relacionadas