2
Je voudrais changer la couleur d'arrière-plan sur ma grille en fonction de la date actuelle. Le code ci-dessous fonctionne, mais la date future qui sera coloriée en bleu commence deux jours plus tard au lieu de 1 jour qui est demain. Ai-je manqué quelque chose dans le code ou devrait-il être modifié différemment? . Gridview Changer la couleur de fond basée sur la date
If e.Row.RowType = DataControlRowType.DataRow Then Dim data As DateTime = Convert.ToDateTime(DirectCast(e.Row.DataItem, DataRowView)("Date").ToString()) Dim diff As TimeSpan diff = DateTime.Now.Subtract(data) Dim days As Integer = diff.Days 'Yellow = past date/White = current date/Blue = future date If days > 0 Then e.Row.BackColor = Drawing.ColorTranslator.FromHtml("#FFFFBB") 'past date' ElseIf days < 0 Then e.Row.BackColor = Drawing.ColorTranslator.FromHtml("#BAD8FF") 'future date' ElseIf days = 0 Then 'present date 'do nothing End If End If
Merci pour votre réponse. J'ai appliqué votre suggestion dans mon code, mais j'ai reçu une erreur sur "Dim jour en tant que Date = data.Row.Field (Of Date) (" Date "). Date" message d'erreur "System.InvalidCastException: la distribution spécifiée n'est pas valide. ? –
J'ai résolu le problème en utilisant votre suggestion J'ai modifié le code pour 'Dim data As DateTime = Convert.ToDateTime (DirectCast (e.Row.DataItem, DataRowView) (" Date "). ToString()) Dim jour As Date = data.Date Dim joursDiff Comme Int32 = (Now.Date - jour) .Days', qui n'a produit aucune erreur et la date de demain est maintenant surlignée en bleu.Est-ce que je dois l'écrire différemment ou le laisser tel quel, car cela fonctionne? –
@g_shockTan : Pourquoi convertissez-vous votre date-champ à la chaîne et puis retour à 'Date', qui est inefficace et peut causer des problèmes de localisation.Est-ce que vous stockez la date comme chaîne? –