Databinding DatagridviewComboboxColumn mit enum
Ich habe eine datagridview, die aufgefüllt wird durch das abrufen von Daten aus SQL server.
gridview.Datasource = dataSet.Tables[0]
-> Kein problem.
In diesem Gitter , eine Spalte ist eine ComboboxColumn...
Für die Füllung (ich meine, zum binden einer datasource nur dieses eine , kein problem :
cmb.DataSource = Enum.GetValues(typeof(MyEnum));
cmb.ValueType = typeof(MyEnum);
cmb.DataPropertyName = "MyEnum";
Ich würde gerne wissen, wie man Daten binden die datagridviewcomboboxcolumn (der Wert in der DB für diese Spalte ist der index des ausgewählten Wertes für den in dieser combobox. und die datasource dieser combobox ist ein Enum).
Wert in DB : 2 -> was ist der index des Elements, um anzuzeigen,
Kann ich präzise die Spalte DB-Namen irgendwo ? Wenn ich das Tue, in der datapropertyname bekomme ich die Fehlermeldung:- > DataGridViewComboboxCell Wert ist nicht gültig ...
Vielen Dank im Voraus !
edit : problem "gelöst". Ich Ersetze das Enum mit einer datatable. viel einfacher ist.
- was genau brauchen Sie?...das datagrid wird an eine Tabelle und fügen Sie ein ungebundenes Kombinationsfeld Spalte Zuordnung zu einem enum.Nach diesem, was Sie brauchen,zum Beispiel ausgewählten Elements im combobox anzeigen auf einen Wert in einer der Spalten?
- Ich habe ein raster, das an ein dataset gebunden ist.
- ja ,Sie sind right.by zu wissen, das Netz ist bereits an ein dataset gebunden... ich muss nur wissen, wie zu binden, die datagridviewcomboboxcolumn (der Wert in DB ist der index von der combobox. und die datasource der combobox ist eine Enumeration).
- ahhh, ich glaube, ich bekam Sie Recht,Sie haben in einer Spalte einige Werte und die ungebundenen datagridviewcomboboxcolumn Sie wollen, dass der ausgewählte Wert in jeder combobox-Komponente gleich dem Wert der Zeilen-Spalte aus der Datenbank-Recht? zum Beispiel stellen Sie sich Ihr Datenbank-Spalte mit dem Namen "test",in rowindex 2 Spalte["test"] den Wert 2 und in derselben Zeile aber in der combobox-Spalte der Wert angezeigt werden, der index 2 der Elemente es?....lassen Sie mich wissen, wenn es so ist ich einige option.
- ja , das ist es, was ich brauche 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie gesagt in den Kommentaren oben habe ich Sie mit der folgenden option:
Dies ist als ein Beispiel können Sie fine-grained diesem, wie Sie sehen, passen,so dass zuerst, bevor Sie die "gridview" datasource hinzufügen ungebundene comboboxColumn ihm einen Namen geben, dann setzen Sie datasource,dann legen Sie die datagridview datasource und abonnieren zum Beispiel für die CellEndEdit und RowStateChanged Veranstaltung wie dieser:
Dann innerhalb dieser 2 Handler dazu(die CellEndEdit behandelt wird, so dass jedes mal, wenn Sie die Zelle Bearbeiten mit den Werten aus der Datenbank der comboboxcell updates);
ich gehe davon aus, dass hier die Spalte aus der Datenbank nur numerische Werte wie 0 oder 2 oder 5,und Ihre enum muss die gleiche Menge von Werten, zum Beispiel,wenn in der Datenbank-Spalte Ihre Werte bis zum maximum von 5 dann ist dein enum werden, wie dies für Beispiel: