Question

J'ai un DataGridView avec deux DataGridViewComboBoxColumns. Je souhaite utiliser l'élément sélectionné dans la première colonne pour déclencher une nouvelle population d'éléments dans la deuxième colonne, ligne par ligne.

Voici le code que j'ai jusqu'à présent. "addlInfoParentCat" identifie la première colonne, et currentRow.Cells.Item (1) est le DataGridViewComboBoxCell que je veux re-peupler. ExtEventAdditionalInfoType est un type I défini contenant les paires chaîne / valeur.

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

En gros, ce que je vois, c’est que la reliure fonctionne très bien la première fois. Lorsque je sélectionne un élément dans la première colonne, les éléments sont correctement renseignés dans la seconde. Je peux ajouter des lignes à DataGridView et répéter le processus.

Le problème survient lorsque j'essaie de modifier l'élément de la première colonne après que la deuxième colonne a déjà été liée. Je reçois une suite infinie de boîtes de dialogue avec les éléments suivants:

System.ArgumentException: la valeur DataGridViewComboBoxCell n'est pas valide.

Avez-vous une idée du pourquoi? Merci d'avance!

MISE À JOUR La suggestion de CodeByMoonlight semble fonctionner.

J'efface la valeur de DataGridViewComboBoxCell avant la nouvelle liaison:

....

            subtypeCell.DataSource = Nothing
            subtypeCell.Value = Nothing  'here's the change
            subtypeCell.DataSource = theChildren

....
Était-ce utile?

La solution

Eh bien, il semble que dès que vous remodifiez la valeur de la première combinaison, vous invalidez la liaison et la source de données que vous avez utilisées pour renseigner la deuxième combinaison, ce qui entraîne toutes les erreurs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top