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

....
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top