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 :

[C#]Comment changer la couleur d'une ligne dans un gridview?


Sujet :

ASP.NET

  1. #1
    En attente de confirmation mail
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 72
    Points
    72
    Par défaut [C#]Comment changer la couleur d'une ligne dans un gridview?
    Bonjour:
    j'utilise un GridView dans mon application web en ASP.NET 2.0 avec le langage C#.
    dans une colonne de la GridView j'ai ajouté une colonne où il y a un boutton pour modifier la ligne en question, ce boutton execute le procédure "modif", je voudrais que dans ce procédure je change la couleur de la ligne en cours, donc j'ai entré le code suivant dans ma classe..

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {

    if (e.CommandName == "modif")
    {
    // je retourne l'indice de laligne en cours
    index = Convert.ToInt32(e.CommandArgument);

    // j'affecte la couleur rouge
    GridView1.Rows[index].BackColor = "red";
    }

    }
    mais il ne reconaisse pas le mot "red" ni sa valeur en hexa...
    lorsque j'ai cherché dans le MSDN et les forum, j'ai trouvé qu'il reconait le nom de la couleur dans les pages .asp mais pas dans les classe (code behind)
    comment je peux resoudre ce problème?
    et merci pour votre aide

  2. #2
    En attente de confirmation mail
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 72
    Points
    72
    Par défaut
    autrement dit, je veux que: au même temps où je modifie la ligne, qu'elle soit sélectionnée en changeant de couleur.
    y a pas moyen?
    merci

  3. #3
    Membre actif Avatar de ccambier
    Profil pro
    Consultant ERP
    Inscrit en
    Octobre 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Octobre 2006
    Messages : 256
    Points : 267
    Points
    267
    Par défaut
    salut
    tu dois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    GridView1.Rows[index].BackColor = System.Drawing.Color.Red;
    ...
    pcq la propriété BackColor d'un GridViewRow (ou de n'importe quel WebControl) est de type System.Drawing.Color qui est une Structure

    il y a une option qui permet de changer automatique le style d'une ligne selectionnée? <EditTemplate> ou <SelectTemplate> je ne sais plus?

  4. #4
    En attente de confirmation mail
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 72
    Points
    72
    Par défaut
    bonjour,
    merci beaucoup ça marche, mais si je rends une colonne de la Gridview invisible, la ligne perd la nouvelle couleur.
    autre chose, je veux récupérer la couleur d'une ligne, et le réaffecter à une autre, j'ai essayé le code suivant:

    String col_name;
    col_name = GridView1.Rows[index].BackColor.Name;
    ...

    GridView1.Rows[index+2].BackColor.Name = col_name:
    mais ça n'a pas marché car "GridView1.Rows[index].BackColor.Name " n'est pas en ecriture (read only) !!!
    est ce qu'il y a une solution?
    et merci pour votre aide

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,

    Je ne sais pas si j'ai bien saisi ton problème mais comme le mentionne ccambier, utilise plutôt un CommandField.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:CommandField ShowSelectButton="True" ButtonType="Image" SelectImageUrl="~/pictures/pencil.png" SelectText="Modifier cet utilisateur" />
    Tu peux lui associer une image ou un bouton ou ce que tu veux d'autre. Et si tu associes un thème à ton GridView, tu auras ta ligne sélectionnée d'une couleur différente.

    Ensuite le GridView est doté d'un évènement fort utile pour toute les manipulations, OnSelectedIndexChanging. En gros, si tu met un CommandField de type select et que l'utilisateur clique sur le bouton/image/texte, tu peux savoir sur quelle ligne il a cliqué et faire tes modifications en conséquence.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void GridViewUsersList_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
    GridViewUsersList.Rows[e.NewSelectedIndex + 2].Cells[0].BackColor = System.Drawing.Color.Aqua;
    }
    Voilà, en espérant que ça puisse t'aider.

    Happy coding

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 122
    Points
    122
    Par défaut
    Effectivement ton code là ne peut par marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String col_name = GridView1.Rows[index].BackColor.Name;
    GridView1.Rows[index+2].BackColor.Name = col_name;
    Fais plutôt ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GridView1.Rows[index].BackColor = GridView1.Rows[index+2].BackColor;
    En gros, pas la peine de passer par le "nom" de la couleur, autant passer par la couleur directement

  7. #7
    Membre actif Avatar de ccambier
    Profil pro
    Consultant ERP
    Inscrit en
    Octobre 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Octobre 2006
    Messages : 256
    Points : 267
    Points
    267
    Par défaut
    en bref il y a différentes façons d'affecter la couleur voulue à un champ voulu.
    n'oublie pas de nous dire si tu as reussi.

  8. #8
    En attente de confirmation mail
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 72
    Points
    72
    Par défaut
    bonjour et merci pour vous tous..
    l'affectation directe de la propriété BackColor, n'a pas marché
    GridView1.Rows[index].BackColor = GridView1.Rows[index+2].BackColor;
    mais celle ci marche:

    GridView1.Rows[index].BackColor = System.Drawing.Color.Red;
    ainsi que:
    GridView1.Rows[index].BackColor = System.Drawing.Color.FromArgb(228, 232, 255);
    merci encore une fois

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/11/2009, 12h55
  2. comment changer la couleur d'une ligne dans dbgrid?
    Par dj_techno dans le forum Composants VCL
    Réponses: 5
    Dernier message: 06/10/2008, 09h25
  3. Réponses: 5
    Dernier message: 18/06/2008, 18h06
  4. Comment changer la couleur d'une Ligne DATAGRIDVIEW ?
    Par mehdiyou dans le forum VB.NET
    Réponses: 1
    Dernier message: 07/04/2008, 14h43
  5. Réponses: 7
    Dernier message: 28/06/2005, 12h53

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