2012-08-29 4 views
9

estoy añadiendo una tabla de datos a un conjunto de datos de esta manera:la adición de una tabla de datos en un conjunto de datos

DataTable dtImage = new DataTable(); 
//some updates in the Datatable 
ds.Tables.Add(dtImage); 

Pero la próxima vez, cuando la tabla de datos se actualiza, ¿será reflejado en el conjunto de datos? o tenemos que escribir un código para que se refleje?

Además, estoy revisando el conjunto de datos si existe la tabla de datos en el conjunto de datos que ya utilizan:

if(!ds.Tables.Contains("dtImage")) 
    ds.Tables.Add(dtImage); 

En la primera iteración, ds.Tables.Contains("dtImage") es falso, por lo que, ds.Tables.Add(dtImage) añade la mesa para el conjunto de datos. Pero en la segunda iteración, ds.Tables.Contains("dtImage") es falso nuevo, pero ds.Tables.Add(dtImage) genera un error:

Datatable already belongs to this dataset.

Si el conjunto de datos no contiene la tabla de datos llamado "dtImage", ¿por qué está lanzando un error?

Actualización: Gracias, ese problema fue resuelto. Pls responder a esta:

But the next time, when the datatable gets updated, will it be reflected in the dataset? or we need to write some code to make it reflected?

+1

lo que se ve su código como para la creación de la tabla de datos? ¿Lo llamó dtImage -> Dim dtImage como DataTable = New DataTable ("dtImage") – Robert

+1

Porque está proporcionando un valor codificado al método 'ds.tables.Contains (" ");' ... Verifíquelo usando 'ds. Tables.contains (footable.tablename); ' –

Respuesta

10

Supongo que no ha configurado la propiedad TableName del DataTable, por ejemplo mediante el constructor:

var tbl = new DataTable("dtImage"); 

Si no se proporciona un nombre, se creará automáticamente con "Table1", la siguiente tabla obtendrá "Table2" y así sucesivamente.

Entonces la solución sería proporcionar el TableName y luego verificar con Contains(nameOfTable).

Para aclarar esto: Obtendrá un ArgumentException si ese DataTable ya pertenece al DataSet (la misma referencia). Obtendrá un DuplicateNameException si ya hay un DataTable en el DataSet con el mismo nombre (no distingue entre mayúsculas y minúsculas).

http://msdn.microsoft.com/en-us/library/as4zy2kc.aspx

+0

Oh gracias, ¿es por eso que la primera vez, no arroja un error? Entonces, la segunda vez también, ¿intentará crear con el nombre de tabla "Table1"? –

+0

@ManikandanSigamani: Pienso que fue algo incomprensible, quise decir que TableName se creará con numers consecutivos al final, por lo que 'Tabel1, Table2, Table3, ...'.Entonces, como no ha proporcionado un nombre, siempre será único y Contiene devuelve falso. Pero cuando agrega la misma referencia de una DataTable, obtendrá la excepción. Si el problema fuera el nombre, no obtendría 'ArgumentException' (... ya pertenece ...) sino' DuplicateNameException'. –

+0

Gracias, eso ayuda. –

6

usted tiene que fijar el nombreTabla que quiera a su dtimage que es por ejemplo

dtImage.TableName="mydtimage"; 


if(!ds.Tables.Contains(dtImage.TableName)) 
     ds.Tables.Add(dtImage); 

se verá reflejado en el conjunto de datos debido conjunto de datos es un envase de su dtimage tabla de datos y tiene una referencia en su imagen

+0

Eso fue muy útil. ¡Gracias! – Arbaaz

3

acaba de dar cualquier nombre a la DataTable igual:

DataTable dt = new DataTable(); 
dt = SecondDataTable.Copy();  
dt .TableName = "New Name"; 
DataSet.Tables.Add(dt); 
Cuestiones relacionadas