Laden...

DataTable-Werte in andere DataTable kopieren

Erstellt von derfrecheDachs vor 17 Jahren Letzter Beitrag vor 16 Jahren 2.753 Views
D
derfrecheDachs Themenstarter:in
34 Beiträge seit 2006
vor 17 Jahren
DataTable-Werte in andere DataTable kopieren

Hallo,

in meiner Anwendung hab ich eine DataGridView, die mit einer DataTable verbunden ist.
Beim Ändern der Größe der DataTable versuche ich eine neue Tabelle zu erzeugen und dann die alten Werte der Tabelle in die neue zu kopieren

neueTabelle.Rows[k].ItemArray[l] = alteTabelle.Rows[k].ItemArray[l];

Diese nimmt jedoch die Werte nicht an. Woran kann das liegen ??

Gibt es dafür keine einfachere Lösung ??

Gruß Horst

484 Beiträge seit 2006
vor 17 Jahren
DataTable neueTabelle = alteTabelle.Clone();

//System.Data.DataTable.Clone();

Jörg

D
derfrecheDachs Themenstarter:in
34 Beiträge seit 2006
vor 17 Jahren

Hallo Jörg,

wenn aber die neue Tabelle weniger oder mehr Reihen bzw. Spalten wie die alte hat, funktioniert dies doch nicht.
Ich hab schon versucht die alten Daten mit neueTabelle.Load( alteTabelle.CreateDateReader()) zu übernehmen, aber dann werden die Daten nur hinten angehängt.
Ich bräuchte aber eine neue Datatable, die die entsprechenden Werte der alten Datatable an derselben Stelle enthält.Wobei man hier noch beachten muss, ob die neue Tabelle grösser (alte Tabellewerte können komplett übernommen werden) oder kleiner (es werden eben nur die Werte übernommen, die in die neue Tabellenstruktur reinpassen) ist.

Gruß Horst

N
4.644 Beiträge seit 2004
vor 17 Jahren

Zugriff auf einzelne Werte:
dataTable.Rows[index][spaltenIndex]

D
derfrecheDachs Themenstarter:in
34 Beiträge seit 2006
vor 17 Jahren

Ich hab das Problem gelöst.

Musste vor dem Verändern der Werte

neueTabelle.AcceptChanges()

setzen (dann wird der Status der Reihe auf unchanged gesetzt).
Vorher stand er auf Added (hatte die DataRow erst kur vorher erzeugt und hinzugefügt) und da blieb er auch. Deswegen hat er meine Zuweisungen nicht übernommen.

Also:

neueTabelle.AcceptChanges(); //RowState = unchanged

neueTabelle.Rows[k].ItemArray[l] = alteTabelle.Rows[k].ItemArray[l]; // RowState = Modified

und schon funktioniert es

L
254 Beiträge seit 2005
vor 16 Jahren


DataRow[] rows = new DataRow[dataSet_OLD.Tables[0].Rows.Count];
dataSet_OLD_OLD.Tables[0].Rows.CopyTo(rows, 0);
foreach (DataRow row in rows)
{
	dataSet_New.Tables[0].Rows.Add(row.ItemArray);
}


If you can't make it, fake it.