Entwickler-Ecke
WinForms - ComboBox Rückgabewert in INT
Schmido - So 28.02.10 18:21
Titel: ComboBox Rückgabewert in INT
Hallo Zusammen,
ich habe eine ComboBox, die automatisch aus einem TableAdapter gefüllt wird.
Hierbei ist Display_Member der textuelle Inhalt und Display_Value die ID aus dem Table_Adapter.
Mit dem Button Speichern soll ein entsprechender Eintrag erzeugt werden, wobei die kategorie_id als INT Wert zu übergeben ist.
Ich komme aber an die Checkbox nur als String heran und mit (int) kann man ja keinen String umwandeln.
C#-Quelltext
1:
| this.cbbKategorie.SelectedItem.ToString() |
Vielen Dank für Tipps und Tricks!
Christian S. - So 28.02.10 18:37
Von welchem Typ sind denn die Items in der comboBox dann? Kenne mich mit dem TableAdapter nicht wirklich aus. Prinzipiell müsste doch sowas möglich sein:
C#-Quelltext
1:
| ((DerTyp) this.cbbKategorie.SelectedItem).ID |
denn die ComboBox hält ja als Items die kompletten Objekte.
Schmido - Mo 08.03.10 22:09
Hallo,
sorry für meine späte Antwort!
Ne leider gibt es keine ID oder das Feld "Kategorie_id" oder ähnliches.
Daher fragte ich ja :)
Jemand noch Tipps oder Tricks?
Grüße
Christian S. - Mo 08.03.10 22:13
DisplayMember und DisplayValue verweisen doch aber auf Eigenschaften der Objekte, die in der ComboBox drin sind. Da muss es doch eine Klasse zu geben!
Schmido - Mo 08.03.10 22:29
Also im TableAdapter sollten ja die Typen der Tabelle sein.
kategorie_id ist INT
kategorie_name ist VARCHAR
Das Display Member und Value stammen aus dem BindingSource.
Aber beide habe ich bisher nirgends finden können.
JüTho - Di 09.03.10 10:20
Schmido hat folgendes geschrieben : |
Das Display Member und Value stammen aus dem BindingSource.
Aber beide habe ich bisher nirgends finden können. |
Diese Zuordnungen stehen in der Formular.Designer.cs.
Jürgen
Schmido - Di 09.03.10 18:52
Hallo,
super! Darüber sind wir jetzt schonmal weiter:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| this.cbbKategorie.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.kategorieBindingSource, "kategorie_id", true)); this.cbbKategorie.DataSource = this.kategorieBindingSource; this.cbbKategorie.DisplayMember = "kategorie_name"; this.cbbKategorie.FormattingEnabled = true; this.cbbKategorie.Location = new System.Drawing.Point(91, 48); this.cbbKategorie.Name = "cbbKategorie"; this.cbbKategorie.Size = new System.Drawing.Size(121, 21); this.cbbKategorie.TabIndex = 2; this.cbbKategorie.ValueMember = "kategorie_id"; |
Schmido - Mi 10.03.10 19:52
Noch jemand eine Idee, wie ich nun an die kategorie_id, also den value Wert komme?
Danke! Danke Danke!
Christian S. - Mi 10.03.10 20:09
Ich hab jetzt mal das Szenario bei mir nachgestellt und im
SelectedIndexChanged-Event einfach mal geguckt, von welchem Typ denn das
SelectedItem einer solchen ComboBox ist. Das zeigte mir, dass das ein
DataRowView ist. Kurz in der Hilfe geguckt: Hat einen Default-Indexer um auf die Spalten zuzugreifen. Bei mir klappt es dann so:
Delphi-Prism-Quelltext
1: 2: 3: 4: 5:
| if comboBox1.SelectedItem <> nil then begin var drv := DataRowView(comboBox1.SelectedItem); MessageBox.Show(drv['ID'].ToString); end; |
(Ist zwar Prism, geht in C# dann aber genauso)
//Edit: Noch schöner kam man's machen, wenn man in die richtige Klasse castet:
Delphi-Prism-Quelltext
1: 2: 3: 4: 5: 6:
| if comboBox1.SelectedItem <> nil then begin var drv := DataRowView(comboBox1.SelectedItem); var row := websiteDataSet.CategoryRow(drv.Row); MessageBox.Show(row.ID.ToString); end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!