Ich habe eine DataGridView 'DGV_MachinesExclusion', die an eine DataTable 'ExcludedMachines' gebunden ist. Beim manuellen Hinzufügen einer neuen Zeile in der DataGridView verwende ich das CellValueChanged-Ereignis der DataGridView, um den folgenden Code auszulösen.Das dynamische Hinzufügen einer Zeile zur Datentabelle fügt zwei Zeilen hinzu
private void DGV_MachinesExclusion_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
DataRow dr = ExcludedMachines.NewRow();
dr = ((DataRowView)DGV_MachinesExclusion.Rows[0].DataBoundItem).Row;
ExcludedMachines.Rows.Add();
UpdateExlusionList();
}
Das Ergebnis ist, dass es zwei Zeilen hinzufügt. Eine leere Zeile und eine Zeile mit den manuell hinzugefügten Daten. Die Methode 'UpdateExclusionList()' schreibt die DataTable einfach in eine XML-Datei. Ich habe diese Art des dynamischen Hinzufügens von Zeilen erfolgreich in der Vergangenheit verwendet. Kann jemand erklären, warum dieser Code zwei Zeilen hinzufügt?
Thx, Thomas
Sie haben Recht, dass eine weiße Zeile hinzugefügt wird, da die Zeile nicht ausgefüllt ist. Ich habe das bereits geändert, aber dann werden nur zwei aufgefüllte Zeilen hinzugefügt. Die 'UpdateExclusionList()' Methode fügt definitiv keine Zeilen hinzu, weil ich das Ereignis ohne den Code über dieser Methode getestet habe. Der DataTable ist nichts passiert. –
Wenn ich eine Pause mache, wird es nur einmal gestoppt. Ich denke also nicht, dass das Ereignis zweimal ausgelöst wird. Wenn ich die Zeile "ExcludedMachines.Rows.Add()" aus dem Code herauslasse, wird nichts zur DataTable hinzugefügt ... –
Das würde darauf hindeuten, dass das Problem in der DataRow-Zeile liegt. Haben Sie versucht: 'DataRow dr = ((DataRowView) DGV_MachinesExclusion.Rows [0] .DataBoundItem) .Row ' und dann das direkt in die Tabelle hinzufügen? –