Hallo
Ich habe da seit dem Woe. immer noch ein Problem bei dem ich nicht weiterkomme. Ich konnte in einem Testprojekt das Problem zumindest auf einen kleinen Codeblock reduzieren.
Aufbau des Projektes...
Folgendes habe ich angelegt:
DataSet ds1.xsd
Im DataSet eine DataTable (dt1
In der DataTable eine Spalte Wert[int]
Auf der Form ein DataGridView (dgv1
Auf der Form eine Bindingsource bs1 die über eine DataSet-Instanz auf die Spalte Wert zugreift.
Auf der Form einen Button (btn1
Wenn ich jetzt den Button klicke soll in die Tabelle einfach eine Zahl geschrieben werden.
Mit dem Standardablauf .Add wird eine 1 geschrieben
Mit dem .Copy sollte eine 2 geschrieben werden.
Problem:
Es tauchen nur die 1er auf keine 2er.
Hier der Code von btn1:
DataTable dt = ds1.dt1;
//Geht
dt.Rows.Add(new object[] {1});
//Geht nicht... Warum?
DataTable t = dt.Clone();
t.Rows.Add(new object[] { 2 });
dt = t.Copy();
Bei 3 mal klicken steht in der Tabelle:
1
1
1
Es sollte aber stehen:
1
2
1
2
1
2
Was muss ich machen damit dieses .copy() funktioniert ?(
Der Grund für dieses umständliche .copy() vorgehen soll fürs erste mal nebensache sein, später wird dann das aufwendige füllen in einen eigenen Thread ausgelagert und zum Schluss die vorbereitete DataTable im GUIthread zurückgeschrieben.
Aber erstmal würde ich gerne überhaupt das .copy verstehen.
Grüße Cornflake
Weeks of programming can save you hours of planning
Arg... 🙂
**Genial ** das geht 🙂 🙂 👍
Nur warum geht das Copy nicht, bzw. wie müsste ich das dann einsetzen?
BIG THX 🙂
Mit einer Zuweisung an eine Variable eines Referenztyps wird nur die Referenz in der Variable überschrieben, nicht das Objekt auf das die Variable referenziert. Das gehört aber zu den Absoluten Grundlagen, die wir als bekannt voraussetzen, siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1.