2016-11-11 6 views
0

Ich bin neu in C#, aber nicht in Programmierung. Ich habe mit VS herumgespielt, bin mit der Sprache vertrauter geworden und habe mich in einer Combobox festgefahren, die an eine int-Datatable-Spalte eines In-Memory-Datasets gebunden ist.Gebundene ComboBox nicht passend

Ich arbeitete an einem Datagridview und hatte keine Probleme, einen DataGridViewComboBoxColumn Erstellen und seine Drop-Down-Liste bevölkert eine benutzerdefinierte Klasse, die bestand aus Key:int und Desc:string. ValueMember = Key, DisplayMember = Desc. DataSource wird als Null belassen, da die Liste direkt in die ComboBox integriert ist. Wählen Sie aus der Combobox und speichern Sie die Änderungen im Raster.

Dann wechselte ich zu einer ComboBox. Sowohl das Gitter als auch die ComboBox haben die exakt gleiche BindingSource. Also, sie zeigen zur selben Zeit auf die selbe Reihe.

Ich binde die ComboBox mit:

cbCtrl.DataBindings.Add("Text", myBindingSource, ColDBName); 

Ohne die Drop-down-Elemente des ComboBox bevölkert, sehe ich der rohe int-Wert in der ComboBox angezeigt. Ich ändere Zeilen mit dem Gitter und der ComboBox-Wert ändert sich auch. So ist es gut.

Dann füllen Sie die Dropdown-Liste der Elemente in der ComboBox (die gleiche wie die Spalte des Gitters an die gleiche Spalte gebunden) und es ist ein Problem. Der rohe int-Wert (z. B. 19) wird nicht mit dem richtigen "Schlüssel" -Element in der Dropdown-Liste der ComboBox abgeglichen. Ich habe versucht DropDownStyle = DropDown & DropDownList aber kein Glück mit beiden. Und ich habe stundenlang nach einer Lösung gesucht. Es sind keine Ereignisse an die ComboBox angeschlossen. Ich erwartete automatische Verbindung des rohen Wertes zu dem zusammenpassenden "Schlüssel" Einzelteil in der ComboBox Dropdown-Liste.

Gibt es noch etwas anderes zu verbinden? Frustrierend, da ich etwas Kleines erwarte.

Jede Hilfe würde sehr geschätzt werden. Vielen Dank.

* Edit: Die Dropdown-Liste stammt tatsächlich aus einem bevölkerten Binding <> und die Binding <> alsComboBox.DataSource geliefert wird.

Antwort