Usuário com melhor resposta
Comparando valores de um GridView

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,
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!!!
- Editado Fabio Alves Borges Rodrigues segunda-feira, 8 de abril de 2013 20:07
- Sugerido como Resposta Samuel Rodrigues dos Anjos segunda-feira, 8 de abril de 2013 20:15
- Marcado como Resposta Fabrício MD segunda-feira, 8 de abril de 2013 20:30
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!!!
-
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. -
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!!!
- Editado Fabio Alves Borges Rodrigues segunda-feira, 8 de abril de 2013 20:07
- Sugerido como Resposta Samuel Rodrigues dos Anjos segunda-feira, 8 de abril de 2013 20:15
- Marcado como Resposta Fabrício MD segunda-feira, 8 de abril de 2013 20:30
-
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
- Editado Samuel Rodrigues dos Anjos segunda-feira, 8 de abril de 2013 20:17
- Sugerido como Resposta Samuel Rodrigues 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
-
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