domingo, 15 de abril de 2012

MUDANDO A COR DA LINHA DE UMA GRIDVIEW PELO STATUS


Hoje vamos aprender a fazer algo simples, mas que pode ser muito util na visualização dos registros de uma GridView.
Temos uma tabela com alguns registros, sendo que uma das colunas é "SITUACAO", que representa se o usuario está ou não ativo.
Hoje vou mostrar como é simples "colorir" a GridView conforme o status de alguma coluna, que no nosso exemplo será utilizado a coluna SITUCAO.
Vamos ao que interessa então, o que iremos fazer é colorir a linha da GridView de VERDE quando a situação for ATIVO e de AMARELO quando a situação for INATIVO.


Abaixo temos a tabela sem formatação:







Em seguinda iremos selecionar a GridView, dentro das da PROPRIEDADES selecione EVENTOS, conforme a figura abaixo:










Dentro do evento ROWDATABOUND coloque o codigo conforme a figura abaixo:


        






  if (e.Row.RowType == DataControlRowType.DataRow)  //VERIFICA SE A LINHA SELECIONADA É UMA LINHA DE DADOS.
            {
                if (e.Row.Cells[3].Text.Equals("ATIVO"))  //QUANDO FOR LINHA QUE CONTÉM DADOS, VERIFICA SE O TEXTO DA COLUNA 3 ESTA COMO "ATIVO".
                {
                    e.Row.BackColor = System.Drawing.Color.LightGreen; //SE O VALOR FOR A PALAVRA "ATIVO", A LINHA É PINTADA COM UM VERDE CLARO
                }
                else
                {
                    e.Row.BackColor = System.Drawing.Color.LightYellow; //SE O VALOR FOR A PALAVRA "INATIVO", A LINHA É PINTADA COM UM AMARELO CLARO
                }
            }

Quando executamos nosso projeto, temos o seguinte resultado, veja da figura abaixo?:





Espero que gostem, e comentem!!!

5 comentários:

  1. Gostei dessa máteria e apesar de simples, foi bem util.
    Gostaria de saber como compara com um valor.
    Tenho uma coluna com valores superiores à 100,00.
    Esse valores, eu gostaria de colorir de vermelho.
    Grato,
    Fabrício Damasceno

    ResponderExcluir
    Respostas
    1. Ola Fabricio, sim é possivel você vai ter que alterar o valor a ser comparado e o que você vai alterar, veja como ficaria + ou - essa solução.

      if (e.Row.RowType == DataControlRowType.DataRow)
      {
      double valor =Convert.ToDouble(e.Row.Cells[2].Text);
      if (valor<=100.00)
      {
      e.Row.Cells[2].ForeColor = System.Drawing.Color.Green;
      }
      else
      {
      e.Row.Cells[2].ForeColor = System.Drawing.Color.Red;
      }
      }

      Excluir
  2. Obrigado Luciano.
    Eu acabei fazendo da seguinte forma que funcionou:

    protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {

    if (Convert.ToDouble(e.Row.Cells[5].Text) > 100)
    {

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

    }

    }
    }

    Vou guarda a sua dica e o seu blog que está bom.
    Abraços.
    Fica com Deus.

    ResponderExcluir
  3. Cara eu já tentei de tudo mas não consigo de jeito algum realizar esta alteração alguem teria alguma solution com esta situação para disponibilizar para que eu pudesse ver?

    ResponderExcluir
    Respostas
    1. Boa tarde,
      Ok, vou criar uma solution no VS 2010 e disponibilizar aqui mesmo no blog, assim você pode baixar e analisar.

      Excluir