Problem mit BindingSource und neuen Daten einfügen

11/03/2010 - 11:12 von M.Erlinger | Report spam
Hallo

ich habe ein Problem bei einer WinForm-Applikation, mit Verwendung des
BindingSource (SQL-Datenbank / SqlClient):
Wenn bereits Daten in der Tabelle vorhanden sind, funktioniert alles
einwandfrei - und ich kann auch neue Datensàtze in meiner Applikation
hinzufügen und anlegen.
Ist aber die Tabelle leer, dann habe ich beim Hinzufügen von neuen
Datensàtzen das Problem, dass alle gebundenen Spalten NULL sind nach
dem SqlDataAdapter.Update(). Wenn ich im Debug-Mode die aktuelle "Row"
mir ansehe, dann sind dort wirklich alle Spalten NULL, die an Controls
gebunden sind.

Beim FormLoad-Event wird ein dtTable.Clear() und
SqlDataAdapter.Fill(dtTable) ausgeführt.
Anlegen einer neuen Zeile mit folgenden Anweisungen:
DataRowView drvNew = (DataRowView)bsMasterData.AddNew();
DataRow newRow = (DataRow)drvNew.Row;

newRow["PL_id"] = 0;
newRow["CL_id"] = DBHelperClass.GetClient();


dtMasterData.Rows.Add(newRow);
Interessant ist, dass wenn das Problem auftritt, jene Spalten, die ich
mit Werten initialisiere die Werte auch beinhalten - nur jene Spalten,
die an Controls gebunden sind, bleibe NULL.

Ich habe keine Ahnung wo hier das Problem liegen kann ??!
Kann mir dazu bitte jemand weiterhelfen ?
Danke & schönen Gruß
Michael
 

Lesen sie die antworten

#1 Marcel Roma
11/03/2010 - 16:42 | Warnen spam
Hallo Michael,

Am Thu, 11 Mar 2010 02:12:53 -0800 (PST) schrieb M.Erlinger:

ich habe ein Problem bei einer WinForm-Applikation, mit Verwendung des
BindingSource (SQL-Datenbank / SqlClient):
Wenn bereits Daten in der Tabelle vorhanden sind, funktioniert alles
einwandfrei - und ich kann auch neue Datensàtze in meiner Applikation
hinzufügen und anlegen.
Ist aber die Tabelle leer, dann habe ich beim Hinzufügen von neuen
Datensàtzen das Problem, dass alle gebundenen Spalten NULL sind nach
dem SqlDataAdapter.Update(). Wenn ich im Debug-Mode die aktuelle "Row"
mir ansehe, dann sind dort wirklich alle Spalten NULL, die an Controls
gebunden sind.



da scheint bei der Bindung über BindingSource etwas nicht ordnungsgemàß zu
verlaufen. Normalerweise làuft das so ab:

BindingSource bs = new BindingSource();
bs.DataSource = dataTable;
dataGridView1.DataSource = bs;

Damit ist gewàhrleistet, dass die DataTable als Datenquelle sowohl der
BindingSource als dem Grid zugrunde liegt.

Was machst Du anders? Fügst Du Datensàtze an BindingSource an bevor Du
dataTable gebunden hast? Versuch mal die neuen Daten direkt in die Tabelle
zu schreiben:

DataRow row = dataTable.NewRow();
...
dataTable.Rows.Add(row);


Gruss
Marcel

Ähnliche fragen