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.
5 avril 2013 à 15:44
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.
26 déc. 2012 à 10:50
comment colorier une cellule dans datagridview avec condition??????
27 avril 2010 à 09:58
C'est en forgeant qu'on devient forgeron...
26 avril 2010 à 22:56
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
26 avril 2010 à 17:18
Je viens de me rendre compte que j'aurais mieux fait de mettre ça dans un forum !
Sorry !
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.