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

C# Discussion :

Mise en forme conditionnelle GridView [Débutant]


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut Mise en forme conditionnelle GridView
    Bonjour à tous,

    Je suis actuellement en train de travailler sur un logiciel en utilisant du C#.

    J'ai réalisé plusieurs gridview sur différentes pages et je voudrais réaliser une mise en forme conditionnelle en fonction des valeurs des gridview.

    J'aimerais que le BackColor de mes cellules changent en fonction des valeurs présentent.

    Quelqu'un aurait t-il une aide à me proposer?

    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Bonjour,

    tu peux intercepter l'évenement paint du gridview et faire ta mise en forme à ce moment la

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Je ne suis pas sur d'avoir compris

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 182
    Points : 4 496
    Points
    4 496
    Par défaut
    tu travailles dans quelle technologie et quel framework?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    J'utilise visual studio 2010 et framework 4.0

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 182
    Points : 4 496
    Points
    4 496
    Par défaut
    WPF, Form, Asp, SilverLight?

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Asp

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 182
    Points : 4 496
    Points
    4 496
    Par défaut
    Pour Windows Form tu devrais trouver ton bonheur ici

    Pour Asp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 
            If e.Row.RowType = DataControlRowType.DataRow Then 
                If e.Row.Cells(2).Text = "1" Then 
                    e.Row.BackColor = System.Drawing.Color.Yellow 
                    e.Row.Cells(2).BackColor = Drawing.Color.Crimson 
                End If 
            End If 
        End Sub

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Désolé c'était bien du Windows form

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut
    Je te conseille de jeter un coup d'oeil sur ce lien , après cela dépendera aussi de si tu souhaites que ta mise en forme soit faite après avoir chargés tes données. Ou après une modifications de tes données chargées, par conséquent il faudrait passer par un événement je pense.

    Attend peut être d'autre avis car je débute.

  11. #11
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut
    bonjour nanais
    C'est du winform voici ce qui'il faut utiliser l'evenement CellFormatting.
    exemple code msdn:
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
     
    using System;
    using System.Drawing;
    using System.Windows.Forms;
     
    public class Form1 : Form
    {
        private DataGridView dataGridView1 = new DataGridView();
        private Bitmap highPriImage;
        private Bitmap mediumPriImage;
        private Bitmap lowPriImage;
     
        public Form1()
        {
            // Initialize the images. 
            try
            {
                highPriImage = new Bitmap("highPri.bmp");
                mediumPriImage = new Bitmap("mediumPri.bmp");
                lowPriImage = new Bitmap("lowPri.bmp");
            }
            catch (ArgumentException)
            {
                MessageBox.Show("The Priority column requires Bitmap images " +
                    "named highPri.bmp, mediumPri.bmp, and lowPri.bmp " +
                    "residing in the same directory as the executable file.");
            }
     
            // Initialize the DataGridView.
            dataGridView1.Dock = DockStyle.Fill;
            dataGridView1.AllowUserToAddRows = false;
            dataGridView1.Columns.AddRange(
                new DataGridViewTextBoxColumn(),
                new DataGridViewImageColumn());
            dataGridView1.Columns[0].Name = "Balance";
            dataGridView1.Columns[1].Name = "Priority";
            dataGridView1.Rows.Add("-100", "high");
            dataGridView1.Rows.Add("0", "medium");
            dataGridView1.Rows.Add("100", "low");
            dataGridView1.CellFormatting +=
                new System.Windows.Forms.DataGridViewCellFormattingEventHandler(
                this.dataGridView1_CellFormatting);
            this.Controls.Add(dataGridView1);
        }
     
        // Changes how cells are displayed depending on their columns and values.
        private void dataGridView1_CellFormatting(object sender, 
            System.Windows.Forms.DataGridViewCellFormattingEventArgs e)
        {
            // Set the background to red for negative values in the Balance column.
            if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("Balance"))
            {
                Int32 intValue;
                if (Int32.TryParse((String)e.Value, out intValue) && 
                    (intValue < 0))
                {
                    e.CellStyle.BackColor = Color.Red;
                    e.CellStyle.SelectionBackColor = Color.DarkRed;
                }
            }
     
            // Replace string values in the Priority column with images.
            if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("Priority"))
            {
                // Ensure that the value is a string.
                String stringValue = e.Value as string;
                if (stringValue == null) return;
     
                // Set the cell ToolTip to the text value.
                DataGridViewCell cell = dataGridView1[e.ColumnIndex, e.RowIndex];
                cell.ToolTipText = stringValue;
     
                // Replace the string value with the image value.
                switch (stringValue)
                {
                    case "high":
                        e.Value = highPriImage;
                        break;
                    case "medium":
                        e.Value = mediumPriImage;
                        break;
                    case "low":
                        e.Value = lowPriImage;
                        break;
                }
            }
        }
     
        public static void Main()
        {
            Application.Run(new Form1());
        }
     
    }
    bon code.........

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Merci,
    Je vais essayer ça

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Re,
    ci-joint j'ai mis une partie du code que j'ai réalisé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       if ((e.Row.Cells[0].Text.Equals("4")))
                {
                    e.Row.Cells[0].BackColor = System.Drawing.Color.Red;
                }
    j'ai réussi à changer la couleur de mes cellules mais je n'arrive pas à les changer en ajoutant une requete inférieur à ou supérieur à......
    Je suis désolé de soliciter une nouvelle fois votre aide.
    Merci

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Il suffit de parser le texte de ta cellule en entier, puis de le comparer, comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int value = Int32.MinValue;
    Int32.TryParse(e.Row.Cells[0].Text, out value);
    if(value == Int32.MinValue) // Le texte n'est pas un entier
          //Traitement spécial
    else if(value<0) // value négatif
           e.Row.Cells[0].BackColor = System.Drawing.Color.Red;
    else if(value >= 0 && value <=5 ) //Value entre 0 et 5 compris
           e.Row.Cells[0].BackColor = System.Drawing.Color.Orange;
    else 
           e.Row.Cells[0].BackColor = System.Drawing.Color.Green;

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Ca marche super bien.
    J'ai juste changer le format de conversion et j'utilise double.
    Par contre avec ce code mon header change de couleur alors que c'est une chaîne de caractère.
    Je suis dessus mais si quelqu'un à une solution je suis preneur
    Merci

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    C'est bon j'ai trouvé une solution.
    J'a compris ma première valeur supérieur à 0 et ca fonctionne.
    Merci à tous pour votre aide.

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

Discussions similaires

  1. [ASP.NET][C#]Mise en forme conditionnelle d'un gridview
    Par PatStan17 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 15/01/2009, 16h49
  2. [2.0] GridView : Mise en forme conditionnelle
    Par jejefeds dans le forum ASP.NET
    Réponses: 3
    Dernier message: 27/10/2006, 18h14
  3. [VBA][Excel] mise en forme conditionnelle
    Par titflocon dans le forum Access
    Réponses: 9
    Dernier message: 19/12/2005, 10h13
  4. Réponses: 4
    Dernier message: 15/11/2005, 18h53
  5. Mise en forme conditionnelle en VBA / Cut-Paste
    Par priest69 dans le forum IHM
    Réponses: 4
    Dernier message: 03/09/2005, 13h54

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