Copiar un datarow

31/01/2008 - 23:27 por Pedro Vidal | Informe spam
Tengo:

DataRow dr1= new DataRow();
...aqui luego la lleno de datos...

Ahora quiero copiarla a la variable dr2.

DataRow dr2= dr1;

Pero quiero duplicar el contenido en dr2 no solo la referencia. Como se hace
?


PV
 

Leer las respuestas

#1 Alberto Poblacion
01/02/2008 - 08:26 | Informe spam
"Pedro Vidal" wrote in message
news:
Tengo:

DataRow dr1= new DataRow();
...aqui luego la lleno de datos...

Ahora quiero copiarla a la variable dr2.

DataRow dr2= dr1;

Pero quiero duplicar el contenido en dr2 no solo la referencia. Como se
hace



Para crear un nuevo datarow en lugar de copiar la referencia, necesitas
en algún momento que se cree una instancia de la clase DataRow, es decir,
hay que hacer un "new". Pero si miras la documentacion de DataRow, verás que
el constructor está marcado como "internal", y por tanto no podemos hacer un
"new" desde fuera de las librerías del framework. Asi pues, la única forma
de crear un DataRow nuevo es llamar a una función existente dentro de
ado.net que lo cree por tí.
La función que lo hace se llama NewRow, y cuelga de DataTable, así que
tienes que ejecutarla sobre el DataTable al que vaya a pertenecer ese
DataRow que estás creando. Una vez hecho eso, la forma más fácil de
trasladar el contenido es tratándolo como un array de object a través de la
propiedad ItemArray:

DataTable dt = ...; //La tabla. Tiene que existir de antemano.
DataRow dr2 = dt.NewRow();
dr2.ItemArray = dr1.ItemArray;

Si quieres duplicar la fila para añadirla de nuevo al DataTable, puedes
hacerlo de golpe en una sola sentencia:

dt.Rows.Add(dr1.ItemArray);

Preguntas similares