Fehler beim Datasource DataGridViewComboBoxCell erneut zu binden?
-
07-07-2019 - |
Frage
Ich habe eine Datagridview mit zwei DataGridViewComboBoxColumns. Ich möchte das ausgewählte Element in der ersten Spalte verwenden, um eine Wiederbevölkerung der Elemente in der zweiten Spalte zu triggern, auf einer pro-Zeile-Basis.
Hier ist der Code, den ich bis jetzt haben. „AddlInfoParentCat“ identifiziert die erste Spalte und currentRow.Cells.Item (1) ist die DataGridViewComboBoxCell, die ich will wieder aufzufüllen. ExtEventAdditionalInfoType ist ein Typ I definiert ist, dass die Zeichenfolge / Wert-Paare enthält.
Private Sub dgvAdditionalInfo_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvAdditionalInfo.CellValueChanged
Dim currentCell As DataGridViewCell
currentCell = Me.dgvAdditionalInfo.CurrentCell
If Not currentCell Is Nothing Then
If currentCell.OwningColumn.DataPropertyName = "addlInfoParentCat" Then
Dim parentTypeID As Integer = currentCell.Value
Dim currentRow As DataGridViewRow = Me.dgvAdditionalInfo.CurrentRow
Dim subtypeCell As DataGridViewComboBoxCell = currentRow.Cells.Item(1)
Dim theChildren As New List(Of ExtEventAdditionalInfoType)
theChildren = Custom_ExtEventAdditionalInfoType.GetChildrenOfThisParentOrderByTypeName(parentTypeID)
subtypeCell.DataSource = Nothing
subtypeCell.DataSource = theChildren
subtypeCell.DisplayMember = "ExtEventAdditionalInfoTypeDescr"
subtypeCell.ValueMember = "ID_ExtEventAdditionalInfoType"
End If
End If
End Sub
Im Grunde, was ich sehe, ist, dass die Bindung funktioniert super beim ersten Mal. Wenn ich ein Element in der ersten Spalte wählen, füllt sie die Elemente korrekt in der zweiten. Ich kann Zeilen in die Datagridview hinzufügen und wiederholen Sie den Vorgang.
Das Problem kommt, wenn ich versuche, das erste Spalte Element zu ändern, nachdem die zweite Spalte bereits gebunden worden ist. Ich erhalte eine endlose Reihe von Dialogfeldern mit dem folgenden:
System.ArgumentException: DataGridViewComboBoxCell Wert ist nicht gültig
.Jede Idee, warum dies geschieht? Vielen Dank im Voraus!
UPDATE erscheint CodeByMoonlight Vorschlag zu arbeiten.
ich klar den Wert des DataGridViewComboBoxCell vor der erneuten Bindung:
....
subtypeCell.DataSource = Nothing
subtypeCell.Value = Nothing 'here's the change
subtypeCell.DataSource = theChildren
....
Lösung
Nun, es sieht aus wie, sobald Sie die erste Combo Wert remodify, Sie entkräften die Bindung und Datenquelle Sie die zweite Combo bevölkern verwendet, wodurch alle Fehler.