Bonjour à tous.

J'ai un petit souci de compréhension sur un test conditionnel avec trois possibilité. J'ai d'abord tenté avec un Select Case, histoire de faire propre.
Voici là code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
Protected Sub calTest_DayRenderUnique(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs)
        Dim cal As Calendar = sender
        With e
            With .Day
                .IsSelectable = False
            End With
            Dim dtDate As DataTable = New DManager("DataDev").RetournerTable("EXEC dbo.REZA_OccupationChambreUnique " & cal.Parent.ID)
            For Each dr As DataRow In dtDate.Rows
                With .Cell
                    .Height = Unit.Pixel(60)
                    Select Case e.Day.Date
                        Case Is < Now()
                            .BackColor = Drawing.Color.Gray
                        Case Is = dr.Item("DateReza")
                            .BackColor = Drawing.Color.Red
                        Case Else
                            .BackColor = Drawing.Color.Green
                    End Select
                End With
            Next
        End With
    End Sub
Alors en gros : on est dans un contrôle Calendar et on va remplir les jour avec une couleur de fond selon la remontée de la base de donnée.
La dataTable contient un seul champ avec une date dedans.
Si la date du jour est passée, le jour doit êre gris dans le Calendar.
Si la date du jour est dans la base, le jour doit être Rouge.
Sinon (donc tou le reste) le jour doit être Vert.

Et là, avec ce code, je n'ai qu'un jour qui est rouge, le dernier de la liste (dans la DataTable).

Du coup, j'ai tenté avec un if et un un ElseIf (que je ne maitrise toujours pas trés bien à mon âge !!!)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
Protected Sub calTest_DayRenderUnique(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs)
        Dim cal As Calendar = sender
        With e
            With .Day
                .IsSelectable = False
            End With
            Dim dtDate As DataTable = New DManager("DataDev").RetournerTable("EXEC dbo.REZA_OccupationChambreUnique " & cal.Parent.ID)
            For Each dr As DataRow In dtDate.Rows
                With .Cell
                    .Height = Unit.Pixel(60)
                    If dr.Item("DateReza") = e.Day.Date Then
                        .BackColor = Drawing.Color.Red
                    ElseIf e.Day.Date < Now() Then
                        .BackColor = Drawing.Color.Gray
                    Else
                        .BackColor = Drawing.Color.Green
                    End If
                End With
            Next
        End With
    End Sub
Et bizarrement j'ai le même résultat. Si je reste sur un test simple, avec du Rouge et du Vert, j'ai bien toutes mes dates qui s'affichent (sauf que j'ai pas de jour gris.

Vous pourriez m'aider ?

PS : tomlev, je n'ai as encore implémenté ton idée mais là, je suis sur un autre type de calendar, alors du coup, je ne sais pas si ton idée peut marcher aussi.