
Envoyé par
_Ez3kiel
La solution de Callo, ou alors dans l'event
DataGridView.CellValidating Tu boucles les combos de ta colonne client et tu testes qu'aucunes des combos n'ait le
.SelectedValue similaire à la ligne à valider.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| Private Sub LivraisonDataGridView_CellValidating(ByVal sender As Object, ByVal e As DataGridViewCellValidatingEventArgs) Handles LivraisonDataGridView.CellValidating
If LivraisonDataGridView.CurrentCell.ColumnIndex = 0 Then
If Not (IsProductNotRepeted()) Then
e.Cancel = True
Me.LivraisonDataGridView.Rows(e.RowIndex).ErrorText = "the value must be a unique"
End If
End If
End Sub
Private Function IsProductNotRepeted() As Boolean
Dim valide As Boolean = True
Dim i As Integer = 0
If LivraisonDataGridView.CurrentRow.Index = 0 Then
Return valide
Else
'Récuperer les produits choisis précédemment ligne par ligne et les comparer avec le produit choisi actuellement
For i = 0 To (LivraisonDataGridView.RowCount - 2)
If (LivraisonDataGridView.Item(0, i).Value) = (LivraisonDataGridView.CurrentCell.Value) Then
valide = False
Return valide
End If
Next
End If
Return valide
End Function |
ce code interprète votre idée très intelligente
comme même , mais il me reste un problème ( A noter que là j'ai une liste de produits non une liste de clients ; juste pour vous mettre dans l'image
)
lorsque'il y a une duplication l'erreur se produit donc l'utilisateur n'a pas le choix que de choisir un autre produit à partir de la liste des produit offertes imaginons , que la liste contient un seul produit donc logiquement l'utilisateur n'a le droit que de créer une seule ligne dans le DGV mais par inattention il choisit le même produit dans la 2eme ligne et là le problème :
tous est bloqué ( il ne peux meme pas fermer la fentere , supprimer la ligne creer....) jusqu’à choisir un autre produit mais il n'a pas de choix qu'un seul produit
pour enlever le bloquage , j'ai tentait de supprimer la ligne "FAUSSE" dans le "CellValidating"
LivraisonDataGridView.Rows.Remove(LivraisonDataGridView.CurrentRow)
mais il me donne ça (piece jointe )
merci pour votre aide
Partager