Colorier ligne datagridview en fonction d'une valeur recherchée dans une cellule

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 635 fois - Téléchargée 17 fois

Contenu du snippet

Novice, je souhaite juste partager cette petite fonction de débutante :

ma datagridview est alimentée par un dataset ou liste d'objets.
Je recherche une certaine valeur dans un champ donné, et souhaite colorier le fond de cette ligne trouvée de la couleur souhaitée.
Retour du nombre d'enregistrements correspondants trouvés.(Ca peut toujours servir à un moment donné...)

je voudrais en profiter pour poser une question aux "maîtres"... (en conclusion)

Source / Exemple :


public function ColorierLigneGrille(ByVal maGrille as DataGridView, _
                               ByVal nomCell as string, _
                               ByVal valeurCell as string, _
                               ByVal couleur as color)as integer
Dim Nb as integer = 0

Dim i as integer

 For i = 0 to maGrille.RowCount - 1

    If maGrille.Rows(i).Cells(nomCell).Value = valeurCell Then
        maGrille.Rows(i).DefaultCellStyle.BackColor = couleur
        Nb = Nb + 1
    end If

 Next

 Return Nb

End Sub

Conclusion :


J'appelle cette procédure dans l'évènement DataBindingComplete de ma grille
car je n'arrive pas à capter un évènement satisfaisant autrement.
Peut être pouvez-vous m'aider ?
(j'ai essayé sans succès dans le RowValidating, RowValidated...
le résultat ne prend pas en compte toutes les lignes correspondantes aux enregistrements de ma table... en tout cas pas la dernière)
Merci de vos conseils.

A voir également

Ajouter un commentaire

Commentaires

cdulsdcma
Messages postés
14
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
9 mai 2015
-
Premier post un peu raté !!!
Je viens de me rendre compte que j'aurais mieux fait de mettre ça dans un forum !
Sorry !
aserf
Messages postés
117
Date d'inscription
lundi 15 avril 2002
Statut
Membre
Dernière intervention
1 juillet 2011
-
Bonjour,

effectivement, pour ce qui est des question il vaux mieux le poster dans le forum,
je vais vous donnée une technique plus rapide, et beaucou plus preformante, ce que vous faite est de boucler sur touet les lignes,
cela n'es pas tres performant, imaginée que vous ayer 1 000 000 de ligne, cela vas etre extremement lent, alors que a l'ecrant vous n'aurait au mieux qu'un 50ene de ligne affichier.

Pour ne refraichire que les lignes qui sont afficher utiliser plutot cellformating, il ne ce lance que pour les cellule qu'il essaye d'afficher, les performances seront tres nettement superieur, voici un exemple pour colorier une ligne sur 2


' Changes how cells are displayed depending on their columns and values.
Private Sub dataGridView_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView_General.CellFormatting

'Sur un entete de colonne, ou un entete de ligne on sort
If e.RowIndex -1 Or e.ColumnIndex -1 Then Exit Sub

'Colorisation d'une ligne sur 2
If CInt(e.RowIndex) Mod 2 = 0 Then

If CType(sender, DataGridView).Columns(e.ColumnIndex).ReadOnly = True Then

e.CellStyle.BackColor = nsInterface.gColorListReadOnly

Else

e.CellStyle.BackColor = nsInterface.gColorListReadWrite

End If

End If
end sub
cdulsdcma
Messages postés
14
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
9 mai 2015
-
Je te remercie de ton conseil que je vais mettre en pratique tout de suite !
C'est en forgeant qu'on devient forgeron...
-
salut!!!
comment colorier une cellule dans datagridview avec condition??????
Bonjopur
J'ai passé des longs jours pour me dédouaner de ce problème,mais en utilisant Ce code, j'ai eu la réponse escompté en Temps record et comme je la voulais.Merci et à Bientot.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.