IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Souci sur un test IF à trois pattes


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Souci sur un test IF à trois pattes
    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.

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Bonjour,

    Il me semble qu'il y a quelque chose de bizarre dans la logique.

    La méthode calTest_DayRenderUnique est appelée pour chaque cellule (autant d'appel que de cellules) non ?

    Si oui, pourquoi faire une boucle pour une même cellule sur toutes les dates récupérées par la proc stock ?

    En gros, le code devrait plutot être :
    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
    24
    25
    26
    27
    28
    29
    30
    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
     
    		.Cell.Height = Unit.Pixel(60)
     
    		' quoi qu'il arrive la cellule est au moins verte
    		.Cell.BackColor = Drawing.Color.Green
     
    		' si la date de la cellule est inférieure à maintenant, la cellule est grise
    		if e.Day.Date < Now then
    			.Cell.BackColor = Drawing.Color.Gray
    		' sinon je vérifie si la date de la cellule est en BDD
    		else
    			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
    					If dr.Item("DateReza") = e.Day.Date Then
    						.BackColor = Drawing.Color.Red
    						' exit for je ne sais plus comment l'écrire en vb
    					End If
    				End With
    			Next
    		end if
     
    	End With
    End Sub

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Ok, je vois bien. Merci pour ton éclaircissement.

    Je n'ai pas repris ton code parce qu'il faut aussi gérer les dates passées et les mettre en gris. Mais j'ai bien vu le truc, je lisais ma datatable pas au bon endroit.
    J'ai modifié et maintenant j'ai tout bon.

    Tu as bien raison, ma logique n'étais pas.................. logique !!!

    Merci et bonne continuation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Petit soucis sur un TreeView ...
    Par hobotalker dans le forum Windows Forms
    Réponses: 8
    Dernier message: 29/11/2005, 15h33
  2. Petit souci sur la libération d'une connexion tcp
    Par alexandre75 dans le forum Développement
    Réponses: 1
    Dernier message: 08/11/2005, 19h43
  3. [XPATH] récupérer le positon() sur un test
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 30/09/2005, 17h20
  4. souci sur ajout de données de zone de liste
    Par Tierisa dans le forum IHM
    Réponses: 6
    Dernier message: 27/09/2005, 08h30
  5. Réponses: 4
    Dernier message: 25/04/2005, 15h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo