none
DATAGRID - CONDIÇÃO COR RRS feed

  • Pergunta

  • Bom dia! 

    Pessoal não deve ser difícil mas não estou conseguindo.

    Tenho um datagrid com as seguintes colunas

    ID  |   DESCRIÇÃO   | STATUS

    A minha coluna status recebe ABERTO OU ARQUIVADO

    Eu quero que a cor mude para vermelho quando a coluna receber ARQUIVADO.

    Alguém pode ajudar? Bom dia!

    terça-feira, 1 de março de 2016 13:26

Respostas

  • Você jogou o valor dessa coluna colstatus em uma variável ?

    é necessário jogar ele em uma variável para fazer a comparação.

    DataGridView dgv = sender as DataGridView;
    
                string colstatus = dgv.Rows[e.RowIndex].Cells["colstatus"].Value.ToString();
      
                if(colstatus == "ARQUIVADO")
    {
                    dgv.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Red;
                    
                }


    • Marcado como Resposta Felipe STW terça-feira, 1 de março de 2016 19:37
    terça-feira, 1 de março de 2016 18:29

Todas as Respostas

  • Bom dia,

    Segue um exemplo em C#.

        private void dgv_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
            {
                DataGridView dgv = sender as DataGridView;
    
               
                if (status == "ARQUIVADO")
                {
                    dgv.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Red;
                    
                }
            }

    Espero que te ajude.

    terça-feira, 1 de março de 2016 13:31
  • amigo não deu certo.

    Você está se referindo a que status quando você colocou:

    if(status == "ARQUIVADO")

    o nome da minha coluna é colstatus eu substitui mas ele pede uma segunda propriedade.

    terça-feira, 1 de março de 2016 18:23
  • Você jogou o valor dessa coluna colstatus em uma variável ?

    é necessário jogar ele em uma variável para fazer a comparação.

    DataGridView dgv = sender as DataGridView;
    
                string colstatus = dgv.Rows[e.RowIndex].Cells["colstatus"].Value.ToString();
      
                if(colstatus == "ARQUIVADO")
    {
                    dgv.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Red;
                    
                }


    • Marcado como Resposta Felipe STW terça-feira, 1 de março de 2016 19:37
    terça-feira, 1 de março de 2016 18:29
  • Ôpa deu certo mas tipo ficou a linha inteira em vermelho.

    DataGridView dgv = sender as DataGridView;
                string mudarCor = dgv.Rows[e.RowIndex].Cells["colStatus"].Value.ToString();
                if (mudarCor == "ARQUIVADO")
                {
                    dgv.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Red;
                }

    Eu preciso que só a coluna Status fique em vermelho ou seja, só o nome ARQUIVADO da coluna status em vermelho.

    Ficou claro? Muito obrigado.

    terça-feira, 1 de março de 2016 18:45
  • OI MARIANA, obrigado pela ajuda, consegui de um modo mais simples no evento cellformating:

    private void dgConsultarProcesso_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                if(e.ColumnIndex == 9)
                {
                    if(e.Value.Equals("ARQUIVADO"))
                    {
                        e.CellStyle.ForeColor = Color.Red;
                    }
                    else if(e.Value.Equals("ABERTO"))
                    {
                        e.CellStyle.ForeColor = Color.Green;
                    }
                } 

    Obrigado, boa tarde =)

    terça-feira, 1 de março de 2016 19:37