Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

999ANDRE999

Colorir célula de gridview condicionalmente

Mensagens Recomendadas

999ANDRE999    3
999ANDRE999

Vivam,

Eu queria pintar uma célula de uma gridview mediante um valor que tivesse numa BD postgres, mas que não é apresentado na gridview. Esse valor é booleano.

Tentei assim, mas sem resultado:

// quando montar as linhas do tipo DADOS
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            // pega os campos 
            string b_sample = DataBinder.Eval(e.Row.DataItem, "b_sample").ToString();
			
			DataBase.Conecta();

            Npgsql.NpgsqlCommand comm = new Npgsql.NpgsqlCommand();
            comm.CommandText = " SELECT b_sample_green FROM status_project where project = '" + b_sample + "'";
            string teste = comm.ExecuteNonQuery().ToString();

            //cores para aprovação
            if (teste == "true")
            {

            }
            else
            {
                if (teste == "false")
                {
                    e.Row.Cells[3].BackColor = Color.YellowGreen;
                }
			}
			DataBase.Desconecta();
		}

Alguém me consegue ajudar?

Obrigado!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos    219
apocsantos

Boa noite,

foreach (DataGridViewRow linha in dataGridView1.Rows)
{
  var condicao = 0;

  if (codicao == 0)
  {
    linha.Cells[0].Style.BackColor = Color.blue;
  }
  else if (condicao == 1)
  {
    linha.Cells[0].Style.BackColor = Color.red;
  }
  else if (condicao == 2)
  {
    linha.Cells[0].Style.BackColor = Color.green;
  }

  else if (condicao == 3)
  {
    linha.Cells[0].Style.BackColor = Color.yellow;
  }
  else
  {}
}

Podes iterar a datagridview toda, verificar célula a célula, pela condição, e pintar a célula de acordo com a condição que queiras. No caso estou sempre a pintar a célula zero de cada linha, mas isso é só alterar o índice.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
999ANDRE999    3
999ANDRE999
6 horas atrás, apocsantos disse:

Boa noite,


foreach (DataGridViewRow linha in dataGridView1.Rows)
{
  var condicao = 0;

  if (codicao == 0)
  {
    linha.Cells[0].Style.BackColor = Color.blue;
  }
  else if (condicao == 1)
  {
    linha.Cells[0].Style.BackColor = Color.red;
  }
  else if (condicao == 2)
  {
    linha.Cells[0].Style.BackColor = Color.green;
  }

  else if (condicao == 3)
  {
    linha.Cells[0].Style.BackColor = Color.yellow;
  }
  else
  {}
}

Podes iterar a datagridview toda, verificar célula a célula, pela condição, e pintar a célula de acordo com a condição que queiras. No caso estou sempre a pintar a célula zero de cada linha, mas isso é só alterar o índice.

Cordiais cumprimentos,

Apocsantos

Bom dia,

Eu não quero pintar de acordo com valores que estejam na gridview, mas sim com valores que estejam guardados numa BD postgres, mas sem aparecerem na grid. :(

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos    219
apocsantos

Bom dia,

Basta substituir a condição para em vez de ser feita de acordo com valores, ser feita de acordo com dos dados provenientes da BD postgres.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
999ANDRE999    3
999ANDRE999
26 minutos atrás, apocsantos disse:

Bom dia,

Basta substituir a condição para em vez de ser feita de acordo com valores, ser feita de acordo com dos dados provenientes da BD postgres.

Cordiais cumprimentos,

Apocsantos

o meu problema está em trabalhar com os dados da BD.

Tenho

			DataBase.Conecta();

            Npgsql.NpgsqlCommand comm = new Npgsql.NpgsqlCommand();
            comm.CommandText = " SELECT b_sample_green FROM status_project where project = '" + b_sample + "'";
            string teste = comm.ExecuteNonQuery().ToString();

e a minha variável teste sai sempre com valor 0.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos    219
apocsantos

Boa noite,

foreach (DataGridViewRow linha in dataGridView1.Rows)
{
  

  if (teste == "true")
  {
    linha.Cells[0].Style.BackColor = Color.green;
  }
  else if (if (teste == "false") 
  {
    linha.Cells[0].Style.BackColor = Color.yellow;
  }
  else
  {}
}

Cordiais cumprimentos,

Apocsantos

P.S.: Desconheço as relações entre as tabelas onde constam os dados para a condição de colorir e para os dados da datagridview, logo terás de fazer tu essa parte.


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.