Jump to content

Colorir célula de gridview condicionalmente


Recommended Posts

Posted

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!

Posted

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"

Posted
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. 😞

Posted

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"

Posted
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.

Posted

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"

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.