Ich möchte wissen, wie der Wert einer DataGridViewComboBox-Zelle festgelegt wird. Ich binde bereits die DataGridViewComboBox mit DataSource. Aber ich möchte dieser Datenquelle einen neuen Wert geben.
Das habe ich bisher:
%Vor%Es wird jedoch ein Fehler ausgegeben, der besagt: Formatausnahme: DataGridViewComboBox Der Zellenwert ist nicht gültig .
Wie kann ich das ohne Fehler erreichen?
Der Fehler ist darauf zurückzuführen, dass Sie ein DataSource
an die Spalte ComboBox
gebunden haben und während Sie Select zuweisen, versucht es, dasselbe in DataSource
zu finden.
Am besten fügen Sie die ursprüngliche DataSource hinzu, die Sie an die Spalte ComboBox
Die Ursache Ihres Problems liegt darin, dass der Wert "Auswählen" in Ihrer Liste der Kombinationsfeldwerte nicht vorhanden ist. Sie müssen dies entweder der Datenquelle für die Spalte oder der Datenquelle für die Combobox der einzelnen Zellen hinzufügen (mit dem Bearbeitungssteuerelement dieser Zelle).
Im Folgenden finden Sie weitere Erläuterungen zum Festlegen des Werts des ausgewählten Elements, das ich verlassen werde, da Sie es möglicherweise nützlich finden.
Es gibt zwei grundlegende Möglichkeiten, den Wert einer DataGridViewComboBoxColumn festzulegen. Sie verwenden entweder Datenbindung oder Sie legen den Wert direkt fest.
Es klingt, als ob Sie versuchen, direkt zu setzen, also erkläre ich das zuerst und dann unten vervollständige ich die Antwort mit Datenbindung.
Nehmen Sie das folgende erfundene Beispiel:
%Vor% In diesem Beispiel habe ich die Eigenschaft ValueMember
auf "id" gesetzt, was auf die Eigenschaftsnamen-ID in der Liste verweist, an die meine ComboBox gebunden ist.
Alles, was ich tun muss, ist Folgendes (wo ich sicher bin, dass meine Zeilen- und Zellenindizes korrekt sind - Sie sollten Code schreiben, um das zu überprüfen):
%Vor% Nun, in meinem Beispiel funktioniert das, weil mein ValueMember
auf meine "id" -Eigenschaft gesetzt ist, die eine ganze Zahl ist. Wenn stattdessen id eine String-Eigenschaft wäre, müsste ich einen Wert wie folgt setzen:
(eigentlich nur das ausprobiert und es schafft eine implizite Umwandlung)
Und natürlich möchte ich sicherstellen, dass es tatsächlich einen Wert von "1" in meiner Liste gibt.
Die obigen paar Zeilen sind die direkte Ursache für Ihren Fehler. - Ihre Liste, die die Werte an das Kombinationsfeld liefert, enthält nicht den Wert "Auswählen".
Um den Wert mithilfe der Datenbindung festzulegen, müssen Sie der ComboBoxColumn in der DataGridView-Datenquelle mitteilen, an was sie gebunden ist.
Das geschieht, indem ich den DataPropertyName der ComboBoxColumn auf den Namen einer Eigenschaft der Klasse setze, gegen die die DataGridView gebunden ist.
Tags und Links c# winforms datagridview