Autor Beitrag
Letschi
Hält's aus hier
Beiträge: 1



BeitragVerfasst: So 18.05.08 16:20 
Hallo NG!

Ich bin ein Neuling was DB-Anbindung mit C# betrifft und nach einigem Herumprobieren hab ich es geschafft, die Einträge einer Tabelle anzuzeigen: Ich habe eine Dialog, der jeweils eine "Datenzeile" der Tabelle anzeigt. Die Anbindung an die DB hab ich mir großteils automatisch vom VS2005 erzeugen lassen, mit folgendem Ergebnis: Ich habe einen TableAdapter, eine BindingSource und ein DataSet. Mit BindingSource.RemoveCurrent() und anschließendem TableAdapter.Update() kann ich Einträge aus der Datenbank löschen. Was ich nicht schaffe, ist einen Eintrag hinzuzufügen. Ich weiß nicht welches Objekt ich der Mehode BindingSource.Add(object) als Parameter übergeben muss. Ich hab mal folgendes Probiert: BindingSource.Add(bindingSource.Current), bekomme aber immer folgende Exception: ArgumentException - Externe Objekte können nicht zur Liste hinzugefügt werden. Kann mir jemand helfen? Vielen Dank!

Gruß,
Letschi
bb1898
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 27.05.08 15:10 
Moderiert von user profile iconChristian S.: Vollständiges Zitat des ersten Beitrags entfernt

So richtig fit bin ich mit der Datenbankanbindung auch noch nicht, aber wenn ich die Dokumentation zur BindingSource richtig verstehe, dann ist ihre Add-Methode für den Fall gedacht, dass sie nicht mit einer externen Datenquelle verbunden ist, sondern ihre eigene Liste hat und verwaltet.

Dein Fall ist der Standardfall, und da musst Du der passenden DataTable in Deinem DataSet eine neue Zeile zufügen, ungefähr so:

ausblenden C#-Quelltext
1:
2:
3:
4:
DataTable meineTabelle = meinDataset.Tables["meinTabellenname"];
DataRow neueZeile = meineTabelle.NewRow();
/* Hier bei Bedarf Defaultwerte für die neue Zeile vorgeben */
meineTabelle.Rows.Add(neueZeile);            // Vorher gehört die neu erzeugte Zeile noch nicht zur Tabelle


Was jetzt in den Eingabefeldern Deines Dialogs eingegeben bzw. geändert wird, wird ins Dataset übernommen und kommt beim nächsten Speichern (mit meinDataAdapter.Update(meineTabelle) o.ä.) in die Datenbank.

Dass das Löschen von Sätzen direkt mit einer Methode der BindingSource geht, scheint mir so etwas wie eine etwas unsymmetrische Abkürzung zu sein. Man müsste ja sonst erst den passenden Satz in der Tabelle finden und braucht dazu sowieso die aktuelle Position in der BindingSource.

Hoffe, das klappt so oder ähnlich.

Gruß,
Hertha