none
Comparando valores de um GridView RRS feed

  • Pergunta

  • Olá pessoal.
    Estou tentando colori as linhas de um GridView que estiverem com valores superiores à 100,00.
    Esses valores estão na coluna SLA.
    Sei que isso é simples, mas não estou conseguindo.
    Alguém poderia me ajudar?

    protected void Gv_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if ( e.Row.RowType == DataControlRowType.DataRow ) 
            {
                 
                if (Convert.ToDecimal( e.Row.Cells[5].Text.GetEnumerator()) > 100)
                {
                   
                    e.Row.ForeColor = System.Drawing.Color.Red; 
    
                }
    
            }
        }
    Eu havia feito comparando com texto e deu certo, só que tem que ser valores acima de 100.
    Grato,
    segunda-feira, 8 de abril de 2013 18:37

Respostas

  • Olá Fabricio...

    Retire o GetEnumerator() da linha:

    if (Convert.ToDecimal( e.Row.Cells[5].Text.GetEnumerator()) > 100)

    protected void Gv_RowDataBound(object sender, GridViewRowEventArgs e){
     if ( e.Row.RowType == DataControlRowType.DataRow) 
     {
      if (Convert.ToDecimal( e.Row.Cells[5].Text) > 100)
      {
       e.Row.BackColor= System.Drawing.Color.Red; 
      }
     }
    }

    Abraço!!!


    segunda-feira, 8 de abril de 2013 20:06

Todas as Respostas

  • protected void Gv_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if ( e.Row.RowType == DataControlRowType.DataRow ) 
            {
                 
                if (Convert.ToDecimal( e.Row.Cells[5].Text.GetEnumerator()) > 100)
                {
                   
                    e.Row.BackColor= System.Drawing.Color.Red; 
                }
            }
        }

    Troque o ForeColor pelo BackColor.

    Abraço!!!

    segunda-feira, 8 de abril de 2013 19:31
  • Fábio.
    Eu já havia feito dessa forma mas tetei mesmo assim por via das duvidas.
    O problema que estou tendo é na condição do if.
    Se eu fizer com istring funciona normalmente mas ao comparar com numero esta dando erro.
    Olha só os Print's.
    Obrigado.

    segunda-feira, 8 de abril de 2013 19:57
  • Olá Fabricio...

    Retire o GetEnumerator() da linha:

    if (Convert.ToDecimal( e.Row.Cells[5].Text.GetEnumerator()) > 100)

    protected void Gv_RowDataBound(object sender, GridViewRowEventArgs e){
     if ( e.Row.RowType == DataControlRowType.DataRow) 
     {
      if (Convert.ToDecimal( e.Row.Cells[5].Text) > 100)
      {
       e.Row.BackColor= System.Drawing.Color.Red; 
      }
     }
    }

    Abraço!!!


    segunda-feira, 8 de abril de 2013 20:06
  • Cara,

    Segue o procedimento que o Fabio postou que terás sucesso.

    Quando estava indicando:

     e.Row.ForeColor = System.Drawing.Color.Red; 


    Você não estava pintando o fundo e sim a letra da célula. É isso que o:

     e.Row.ForeColor

    quer dizer.

    Observe que o Fabio utiliza:

    e.Row.BackColor
    para pintar o fundo da célula.


    Atenciosamente,

    Samuel dos Anjos


    segunda-feira, 8 de abril de 2013 20:17
  • Fábio.
    Muitissímo Obrigado.
    Funionou redondo.
    Vlw.
    Fica com Deus.
    • Editado Fabrício MD segunda-feira, 8 de abril de 2013 20:30
    segunda-feira, 8 de abril de 2013 20:27
  • Só para melhorar esse tópico, o  e.Row.ForeColor estava colorindo as bordas da tabela e as letras.
    Eu fiz da seguinte forma para colorir apenas as letras.

    if (e.Row.RowType == DataControlRowType.DataRow)
            {
    
                if (Convert.ToDouble(e.Row.Cells[5].Text) > 100)
                {
    
                    e.Row.Cells[0].Text = "<font color=#ff0000>" + e.Row.Cells[0].Text + "</font>";
                    e.Row.Cells[1].Text = "<font color=#ff0000>" + e.Row.Cells[1].Text + "</font>";
                    e.Row.Cells[2].Text = "<font color=#ff0000>" + e.Row.Cells[2].Text + "</font>";
                    e.Row.Cells[3].Text = "<font color=#ff0000>" + e.Row.Cells[3].Text + "</font>";
                    e.Row.Cells[4].Text = "<font color=#ff0000>" + e.Row.Cells[4].Text + "</font>";
                    e.Row.Cells[5].Text = "<font color=#ff0000>" + e.Row.Cells[5].Text + "</font>";
    
                }
    
            }

    Vejam a imagem abaixo:

    Abraços.
    Fiquem com Deus.

    • Editado Fabrício MD terça-feira, 9 de abril de 2013 13:35
    terça-feira, 9 de abril de 2013 13:25