Colore celle datagridview in base al valore

di il
13 risposte

Colore celle datagridview in base al valore

Ciao a tutti, 

ho un datagridview dove in alcune colonne ho i valori “OK” e “NO”.

Vorrei tanto che, per tutte le celle con il valore OK, la cella si colorasse di verde, mentre per il NO, di rosso

Ho provato a scrivere un codice, ma non funziona.

Questo è il codice, qui ho indicato solo una colonna, ma una volta che trovo la soluzione per una, poi fare le altre penso che non ci voglia poi molto

Si accettano consigli, grazie :)

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (this.dataGridView1.Columns[e.ColumnIndex].HeaderText.Equals("risposta"))
    {
        if (e.Value.Equals("OK"))
            e.CellStyle.BackColor = Color.Green;
        else if (e.Value.Equals("NO"))
            e.CellStyle.BackColor = Color.Red;
        
    }
}

13 Risposte

  • Re: Colore celle datagridview in base al valore

    Manca un controllo per e.Value

                    if (e.Value != null)
                   {
                       if (e.Value.Equals("OK"))
                           e.CellStyle.BackColor = Color.Green;
                       else if (e.Value.Equals("NO"))
                           e.CellStyle.BackColor = Color.Red;
                   }
    
  • Re: Colore celle datagridview in base al valore

    12/12/2023 - oregon ha scritto:


    if (e.Value != null) { if (e.Value.Equals("OK")) e.CellStyle.BackColor = Color.Green; else if (e.Value.Equals("NO")) e.CellStyle.BackColor = Color.Red; }

    Ho fatto la modifica, ho eseguito ma non me le colora. Dove sbaglio? In pratica io avvio il codice, clicco su un button che mi popola il datagridview, ma non c'è nessuna colorazione. Forse dovrei collegare questo codice ad un button da eseguire dopo che ho popolato il datagridview? Grazie

  • Re: Colore celle datagridview in base al valore

    Edit: ora ho messo il codice che popola il mio datagridview nel public form, in modo da caricarlo all'avvio, ma ancora niente colorazione

  • Re: Colore celle datagridview in base al valore

    Come popoli la griglia? Mostra il codice

  • Re: Colore celle datagridview in base al valore

     Ecco il codice, grazie:

    public Form1()
     {
         InitializeComponent();
         string connectionString = "Server=127.0.0.1;Port=3306;Database=quiz;Uid=root;Pwd=;";
    
         string query = "SELECT * FROM answers";  
         using (MySqlConnection conn = new MySqlConnection(connectionString))
         {
             using (MySqlDataAdapter adapter = new MySqlDataAdapter(query, conn))
             {
                 DataSet ds = new DataSet();
                 adapter.Fill(ds);
                 dataGridView1.DataSource = ds.Tables[0];
                 dataGridView1.AllowUserToOrderColumns = true;  
    
    
             }
         }
     }
  • Re: Colore celle datagridview in base al valore

    Può essere che nei campi ci sono degli spazi e il confronto non va a buon fine? Aggiungi la funzione Trim

                    if (e.Value != null)
                   {
                       if (((string)e.Value).Trim() == "OK")
                           e.CellStyle.BackColor = Color.Green;
                       
                       if (((string)e.Value).Trim() == "NO")
                           e.CellStyle.BackColor = Color.Red;
                   }
    
  • Re: Colore celle datagridview in base al valore

    Purtroppo niente, quando avvio, la colonna si presenta cosi:

    Non ho idea di come risolvere, è da stamattina che ci sbatto la testa :(

  • Re: Colore celle datagridview in base al valore

    Ho provato e ottengo ad esempio

    Dovrai fare un po' di debugging, interrompere il codice dopo la if (e.Value != null) e osservare il valore di e.Value

  • Re: Colore celle datagridview in base al valore

    Ciao, grazie per le risposte, oggi vedrò di fare il debug, intanto ho creato un progetto nuovo (in quello vecchio stava facendo un mix di test, visto che sto rispolverando dopo 8 anni C#) e inserendo quegli IF di ieri ottengo questo:

    Ci ho passato sopra il mouse sulle istruzioni sottolineate e mi dice questo:

    “CellStyle may be null here - CS8602 - Dereference of a possibly null reference."

    Potrebbe essere un errore significativo? Grazie

  • Re: Colore celle datagridview in base al valore

    Non è un errore ma un avvertimento che potresti incorrere in un errore. Non è questo il problema.

    Se oltre al codice che hai mostrato ne hai altro che io non ho visto, può darsi che questo concorra a creare l'anomalia.

    Ripeto che non ho avuto problemi quindi dovrai solamente fare debugging e controllare durante l'esecuzione del codice.

  • Re: Colore celle datagridview in base al valore

    13/12/2023 - oregon ha scritto:


    Non è un errore ma un avvertimento che potresti incorrere in un errore. Non è questo il problema.

    Se oltre al codice che hai mostrato ne hai altro che io non ho visto, può darsi che questo concorra a creare l'anomalia.

    Ripeto che non ho avuto problemi quindi dovrai solamente fare debugging e controllare durante l'esecuzione del codice.

    Ok, grazie,  devo in primis capire dove vedere il valore della singola istruzione quando si fa il debug, perchè onestamente non me lo ricordo. Ieri ci avevo provato, avevo messo il punto rosso dopo l'istruzione dopo               

      if (e.Value != null)

    ho fatto “avvia debug”, ma non sapevo dove guardare per visualizzare i valori delle istruzioni. Ci riproverò oggi.

    Per quello che riguarda il codice, c'è solo quello e la parte, ovviamente, che popola il datagridview, non c'è altro

  • Re: Colore celle datagridview in base al valore

    Guarda, non posso dirti molto altro. Bisognerebbe esaminare il programma di persona mentre funziona e fare il debugging al posto tuo.

    Se vuoi inviare uno zip con il progetto intero, posso dare un'occhiata.

  • Re: Colore celle datagridview in base al valore

    13/12/2023 - oregon ha scritto:


    Guarda, non posso dirti molto altro. Bisognerebbe esaminare il programma di persona mentre funziona e fare il debugging al posto tuo.

    Se vuoi inviare uno zip con il progetto intero, posso dare un'occhiata.

    Sarebbe fantastico, come te lo mando? mi dai un indirizzo email? Grazie mille

Devi accedere o registrarti per scrivere nel forum
13 risposte