Bonjour tous le monde,
J'ai un gros soucis et je ne sais pas comment le gérer :
J'ai une procédure qui se charge de mettre à jour les cellules de mon DataGridView ligne par ligne.
Lorsque mon DatagridView n'est pas filtré tous fonctionne très bien mais lorsque j'ai un filtre par exemple sur la colonne 1 : MonBindingSource.filter = "Colonne1 = 'ValeurduFiltre', ca ne fonctionne plus.
En effet pendant l'opération de mise à jour des cellules, si j'écrit dans une cellule correspondant à la colonne Filtré, la ligne n'existe plus ou devient invalide (je ne sais pas trop) et l’écriture dans cette cellule échoue.
Je ne sais pas comment le gérer, Soit je mets un simple bloc Try autour de SetUIDataGridViewRowCar, soit il y a un moyen de suspendre le Filtre le temps de faire la mise à jour. Mais est ce que ça à réellement un intérêt de mettre à jour une ligne qui disparaît du DataGridView sachant que c'est juste de l'affichage (les données sous jacentes étant déjà à jours)
j'aimerais beaucoup avoir votre avis.
Merci beaucoup pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Sub RefreshUICars() If DataGridViewCars.Rows.Count <= 0 Then Exit Sub IsLoadingUICars = True For Each Row As DataGridViewRow In DataGridViewCars.Rows Dim CarName As String = CStr(Row.Cells(dgvCols.Name.Name).Value) SetUIDataGridViewRowCar(CarName, Row) Next IsLoadingUICars = False End Sub
EDIT : J'ai placé un bloc Try et Il semblerait que j'ai un autre soucis : toutes les lignes qui se trouvent après la ligne en question, ne sont plus mise à jour et sont affichés avec des mauvaises valeurs, je pense que c'est le parcours de la collection de lignes qui échoue à cause des index de lignes qui se décalent (toujours à cause du filtre).
Partager