Laden...

ComboBox gebunden -> Datenziel

Erstellt von Cannon vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.213 Views
C
Cannon Themenstarter:in
282 Beiträge seit 2008
vor 16 Jahren
ComboBox gebunden -> Datenziel

Hallo,

ich probiere hier schon ewig rum und finde auch nichts brauchbares. Aber dennoch denke ich das Ziel schwebt mir vor den Augen.

Ich habe hier eine gebundene ComboBox in VS2008. Nun greift dieses Element auf 2 Tabellen in einer Datenbank zu. Das anzeigen der Daten funktioniert wunderbar und auch das wählen klappt. Aber der "Inhalt" der ComboBox wird nicht in die Datenbank zurückgeschrieben. Wie heißt denn der Member, der dass Ziel angibt, wohin die Daten gespeichert werden sollen. Also der Gegenpart zu SelectedValue. Oder muss ich das manuell machen?

915 Beiträge seit 2006
vor 16 Jahren

Hrm, die eine Datenbank gibt dir den Inhalt der ComboBox Auswahl wieder. Das ist dann <ComboBox>.DataSource.

Für die andere Datenbank benötigst du <ComboBox>.DataBindings.

Über <ComboBox>.DataBindings.Add(new System.Windows.Forms.Binding("Text", <BindingSource>, "<ColumnName1>", true)); kannst du dann die Daten binden. Jeweils an ein Property von ComboBox und bei der Datenbank an in bezug auf dessen Spaltenname.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

C
Cannon Themenstarter:in
282 Beiträge seit 2008
vor 16 Jahren

Also das funktioniert bei mir nicht besser. Ich schreibe mal kurz auf, was der Codegenerator von VS2008 mir da im Codegenerator erzeugt hat.


this.comboBox1.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.table1BindingSource, "table2_id", true));
this.comboBox1.DataSource = this.table2BindingSource;
this.comboBox1.DisplayMember = "table2_column5";
this.comboBox1.ValueMember = "table2_id";

Meiner Meinung sollte damit alles funktionieren. Aber die Daten werden nicht in table1 aktualisiert. Aller anderen Daten (Textboxen) funktionieren, also kann es nicht am fehlerhaften speichern der Daten liegen.

Habe ich evtl. was vergessen zuzordnen?

915 Beiträge seit 2006
vor 16 Jahren

Hrm, also wenn ich das nicht falsch sehe dann ist da nen Fehler drinnen.

Du bindest die Daten an this.table1BindingSource an die Spalte table2_id - müsste das nicht table1_id sein?

Also


this.comboBox1.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.table1BindingSource, "table1_id", true));
this.comboBox1.DataSource = this.table2BindingSource;
this.comboBox1.DisplayMember = "table2_column5";
this.comboBox1.ValueMember = "table2_id";

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

C
Cannon Themenstarter:in
282 Beiträge seit 2008
vor 16 Jahren

Naja .. in table1 ist die ID von table2 gespeichert. Das heißt die Aufgabe der ComboBox ist es in table1 einen Wert zu verändern, der die Informationen aus table2 bezieht. Eben eine typische Tabellen-Beziehung.

table1

table1_id
table1_column2
table1_column3
table1_column4
table2_id

table2

table2_id
table2_column2
table2_column3
table2_column4
table2_column5

Also wie oben ... und ich mache dann ein Update auf table1. Dennoch geht es nicht. Alle anderen Daten werden gespeichert. Und so aktualisiere ich:


this.Validate();
this.table1BindingSource.EndEdit();
this.table1TableAdapter.Update(this.smDataSet.table1);

5.299 Beiträge seit 2008
vor 16 Jahren

habich 2 Ideen zu:

  1. stimmt was mittm TableAdapter nicht. Überprüf mal den Update-CommandText, und die Parameter
  2. Du hast eine Projekt-Konfiguration, wo die Datenbank-Datei bei jedem Neustart wieder hergestellt wird. Das erscheint dann so, als seien Änderungen nicht übernommen. - Aber dann würde das auch bei den Textboxen so erscheinen.

Der frühe Apfel fängt den Wurm.

C
Cannon Themenstarter:in
282 Beiträge seit 2008
vor 16 Jahren

VIELEN DANK für die Hilfe. Ich habe den Fehler gefunden. Generell war schon alles richtig, bis auf einen Umstand, den ich nur durch die Volltextsuche gefunden habe. Ich hatte den Datenbankeintrag noch an eine ReadOnly-TextBox gebunden. Nur leider irgednwie falsch, sodass es mir jedes mal den Wert beim Update verändert hatte. Jetzt geht alles wunderbar.