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 :

mettre en couleur une ligne gridview


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 132
    Par défaut mettre en couleur une ligne gridview
    Bonjour,

    voici mon pb, j'ai une gridview sur laquelle j'affiche la liste des mes appels. cependant j'ai un champ "priorité" qui deux états: bloquant ou non.
    je souhaiterai que si la priorité est bloquant, toute la ligne de la gridview qui a cet état soit en rouge.

    merci de votre aide

  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
    Je pense qu'il faut que tu recolores ta ligne suivant tes besoins dans l'évènement : RowDataBound de ta gridview ! Moi je l'ai fait mais pour une cellule donc pourquoi pas une ligne !!

    Pour être précis, je ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected void tadatagrid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
          if(e.Row.RowType == DataControlRowType.DataRow) // test pour savoir si on est sur une ligne ou le header de la datagrid
          {
                if(tontest) {e.Row.BackColor= tacouleur;}
          }
    }
    Cet évènement est déclenché pour chaque ligne !

    Bon courage

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 132
    Par défaut erreur
    j'ai une erreur comme celle-ci
    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
    Erreur de compilation 
    Description : Une erreur s'est produite lors de la compilation d'une ressource requise pour répondre à cette demande. Veuillez consulter ci-dessous les détails relatifs à l'erreur en question, puis modifier votre code source de manière appropriée. 
     
    Message d'erreur du compilateur: CS0029: Impossible de convertir implicitement le type 'string' en 'bool'
     
    Erreur source:
     
     
     
    Ligne 32 : {if(e.Row.RowType == DataControlRowType.DataRow) // test pour savoir sin on est sur une ligne ou le header de la datagrid
    Ligne 33 :       {
    Ligne 34 :           if ("Bloquant") { e.Row.BackColor = "Red"; }
    Ligne 35 :       }
    Ligne 36 : 
     
     
    Fichier source: c:\dev\APPLIWeb\VueSTC\mise.aspx.cs    Ligne: 34
    si tu peux encore m'expliquer merci




    Citation Envoyé par ostenhard Voir le message
    Je pense qu'il faut que tu recolores ta ligne suivant tes besoins dans l'évènement : RowDataBound de ta gridview ! Moi je l'ai fait mais pour une cellule donc pourquoi pas une ligne !!

    Pour être précis, je ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected void tadatagrid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
          if(e.Row.RowType == DataControlRowType.DataRow) // test pour savoir si on est sur une ligne ou le header de la datagrid
          {
                if(tontest) {e.Row.BackColor= tacouleur;}
          }
    }
    Cet évènement est déclenché pour chaque ligne !

    Bon courage

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut

    Tu voudrais pas faire un ptit effort de reflexion avant de demander de l'aide

  5. #5
    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
    Lol j'ai été doublé !!!

    Mais bon pour t'aider, tu as une erreur ligne 34 avec une erreur de conversion de string vers bool ! Donc regarde où tu as une string mais où il faudrait un bool !!!

    Je peux pas faire mieux ! Sinon y a l'ophtalmo !

  6. #6
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Petit rappel : Le if teste une condition

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 85
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If(untruc == uneautretruc) 
    {
    // sa c'est une condition
    }
     
    if("Bloquant")
    {
    //sa ressemble a rien
    }

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 132
    Par défaut je sais que if teste une condition
    desolé mais je n'avais pas mis mon test car justement je ne vois pas comment inserer l'element à tester. je l'ai fais juste bloqué à ce niveau car lorsque je teste je mets le nom de ma base "societé".
    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     protected void Gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
            
            
         {if (e.Row.RowType == DataControlRowType.DataRow) // 
      {
        Societe.AppelRow APPEL = (Societe.AppelRow)((System.Data.DataRowView)e.Row.DataItem).Row;
        
          {
              if ("A_PRIORITE == Bloquant") { e.Row.BackColor = System.Drawing.Color.Yellow; }
          }
    
      }
        }
    Citation Envoyé par Pongten Voir le message
    Petit rappel : Le if teste une condition

  9. #9
    Membre émérite Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Par défaut
    if ("A_PRIORITE == Bloquant") { e.Row.BackColor = System.Drawing.Color.Yellow; }
    dans ton if tu as une string donc ce n'est pas un test. ta condition doit etre if(A_PRIORITE=="bloquant")... si bien sur A_PRIORITE est une string sinon tu dois le caster dans le bon type.

  10. #10
    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
    Avec cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Societe.AppelRow APPEL = (Societe.AppelRow)((System.Data.DataRowView)e.Row.DataItem).Row;
    Arrives-tu à récupérer ta ligne dans ta datatable ?
    Si oui, je ne vois pas où est le problème ! Car si tu as la ligne, tu peux faire ton test comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(APPEL.tonchamppriorité == "Bloquant")
    Si non, affiches-tu la priorité dans ta gridview car là y a moyen de faire une bidouille !

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 132
    Par défaut pb de recupération
    justement mon pb est de recuperer la ligne.
    mais dans ma gridview j'affiche la priorité.


    Citation Envoyé par ostenhard Voir le message
    Avec cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Societe.AppelRow APPEL = (Societe.AppelRow)((System.Data.DataRowView)e.Row.DataItem).Row;
    Arrives-tu à récupérer ta ligne dans ta datatable ?
    Si oui, je ne vois pas où est le problème ! Car si tu as la ligne, tu peux faire ton test comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(APPEL.tonchamppriorité == "Bloquant")
    Si non, affiches-tu la priorité dans ta gridview car là y a moyen de faire une bidouille !

  12. #12
    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
    Bon ok ton pb c'est de récupérer la ligne mais normalement, dans e.Row.DataItem tu dois pouvoir récupérer la ligne !!! Est-ce le cas chez toi ? Chez moi c'est le cas !

    Le mieux serait que tu mettes un point d'arrêt dans ton code où tu as l'instruction e.Row.DataItem (ou même e.Row) et que tu regardes le contenu de e.Row.DataItem.

    Si ce n'est pas vide, c'est que c'est probablement ta ligne !
    Si tu vois pas trop ce je dis, mets nous le code source de l'évènement RowDataBound de ta gridview !

    PS : je sais que je m'exprime mal parfois donc un peu de code source et ça ira mieux ! Au moins on saura tous où tu en es !

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 132
    Par défaut déjà une erreur
    j'ai déjà une erreur au niveau de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    APPELS3.AppelRow APPEL = (APPELS3.AppelRow)((System.Data.DataRowView)e.Row.DataItem).Row;
    APPELS3 c'est le nom de mon formulaire qui contient la gridview.
    je ne savais pas koi mettre là.
    et toi tu mets koi?



    Citation Envoyé par ostenhard Voir le message
    Bon ok ton pb c'est de récupérer la ligne mais normalement, dans e.Row.DataItem tu dois pouvoir récupérer la ligne !!! Est-ce le cas chez toi ? Chez moi c'est le cas !

    Le mieux serait que tu mettes un point d'arrêt dans ton code où tu as l'instruction e.Row.DataItem (ou même e.Row) et que tu regardes le contenu de e.Row.DataItem.

    Si ce n'est pas vide, c'est que c'est probablement ta ligne !
    Si tu vois pas trop ce je dis, mets nous le code source de l'évènement RowDataBound de ta gridview !

    PS : je sais que je m'exprime mal parfois donc un peu de code source et ça ira mieux ! Au moins on saura tous où tu en es !

  14. #14
    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
    Ok, tu as une erreur quand tu compiles ou quand tu exécutes ?

    Bon enfin on peut faire sans le savoir donc normalement ton évènement RowDataBound de ta gridview ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected void tadatagrid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
          if(e.Row.RowType == DataControlRowType.DataRow) // test pour savoir si on est sur une ligne ou le header de la datagrid
          {
                if(tontest) {e.Row.BackColor= tacouleur;}
          }
    }
    Je t'invite à mettre en commentaire tout ce qu'il y a à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(tontest) {e.Row.BackColor= tacouleur;}
    Maintenant, mets un point d'arrêt sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(e.Row.RowType == DataControlRowType.DataRow)
    Tu exécutes ton code, et le debuggeur va s'arrêter sur la ligne en question !
    Maintenant, tu vas sélectionner "e.Row", faire clic droit "Ajouter un espion rapide" (si tu es en anglais "QuickWatch") !
    Une fenêtre va apparaître, là tu regardes le contenu de DataItem (au premier passage tu es sur le Header donc DataItem est vide) !
    En regardant le contenu de DataItem, tu sauras de quel type est son contenu s'il en a un biensur, tu pourras même regarder la valeur du champ priopriété ! Enfin tu sauras tout ce que tu as à savoir pour faire ce que tu veux !

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 132
    Par défaut debuguer
    en debugant en insérant un point d'arrêt à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if(e.Row.RowType == DataControlRowType.DataRow)
    la valeur de DataItem est null.

    Citation Envoyé par ostenhard Voir le message
    Ok, tu as une erreur quand tu compiles ou quand tu exécutes ?

    Bon enfin on peut faire sans le savoir donc normalement ton évènement RowDataBound de ta gridview ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected void tadatagrid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
          if(e.Row.RowType == DataControlRowType.DataRow) // test pour savoir si on est sur une ligne ou le header de la datagrid
          {
                if(tontest) {e.Row.BackColor= tacouleur;}
          }
    }
    Je t'invite à mettre en commentaire tout ce qu'il y a à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(tontest) {e.Row.BackColor= tacouleur;}
    Maintenant, mets un point d'arrêt sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(e.Row.RowType == DataControlRowType.DataRow)
    Tu exécutes ton code, et le debuggeur va s'arrêter sur la ligne en question !
    Maintenant, tu vas sélectionner "e.Row", faire clic droit "Ajouter un espion rapide" (si tu es en anglais "QuickWatch") !
    Une fenêtre va apparaître, là tu regardes le contenu de DataItem (au premier passage tu es sur le Header donc DataItem est vide) !
    En regardant le contenu de DataItem, tu sauras de quel type est son contenu s'il en a un biensur, tu pourras même regarder la valeur du champ priopriété ! Enfin tu sauras tout ce que tu as à savoir pour faire ce que tu veux !

  16. #16
    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
    Sur la première ? Ou sur toutes les lignes ?

    Au cas où, pour passer à la ligne suivante, il faut que tu fermes la fenêtre d'espion puis que tu continues l'exécution de ton code.

    Si tu as tout bien fait, il doit rentrer obligatoirement à nouveau dans le RowDataBound et là ton DataItem ne sera pas null !

    Si il est null tout le temps y a un autre pb ! Mais si ta gridview s'affiche avec des données, il ne doit être null que pour le premier passage correspondant au Header !!!

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 132
    Par défaut il n'estplu null
    jusque là c bon il n'est plus null.


    Citation Envoyé par ostenhard Voir le message
    Sur la première ? Ou sur toutes les lignes ?

    Au cas où, pour passer à la ligne suivante, il faut que tu fermes la fenêtre d'espion puis que tu continues l'exécution de ton code.

    Si tu as tout bien fait, il doit rentrer obligatoirement à nouveau dans le RowDataBound et là ton DataItem ne sera pas null !

    Si il est null tout le temps y a un autre pb ! Mais si ta gridview s'affiche avec des données, il ne doit être null que pour le premier passage correspondant au Header !!!

  18. #18
    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
    Certes! Mais alors tu as réussi à corriger ton code en fonction des informations données par l'espion ???

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 132
    Par défaut oui normalement
    je suis entrain de tout reverifier, par contre il ne reconnait pas tjrs A_PRIORITE.


    Citation Envoyé par ostenhard Voir le message
    Certes! Mais alors tu as réussi à corriger ton code en fonction des informations données par l'espion ???

  20. #20
    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
    Bon ce que tu dois faire avec l'espion c'est regardé où tu retrouves le champ qui stocke la priorité. Je pense que ça tu dois pouvoir y arriver !!!
    Si tu trouves le champs tu trouves la solution !!! (Bon c'est vrai que c'est un peu un raccourci mais bon !!!)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/10/2013, 17h57
  2. [BO 6.1] Mettre en couleur une ligne sur 2
    Par nawal59 dans le forum Débuter
    Réponses: 4
    Dernier message: 07/08/2008, 09h37
  3. attribuer une couleur à une ligne d'une gridview
    Par babafredo dans le forum ASP.NET
    Réponses: 6
    Dernier message: 16/07/2007, 12h35
  4. [JTable] Mettre en couleur une ligne de ma JTable
    Par cedricbr dans le forum Composants
    Réponses: 3
    Dernier message: 03/03/2006, 13h47
  5. Réponses: 3
    Dernier message: 24/02/2006, 13h30

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