none
Cor datagrid RRS feed

  • Pergunta

  • Galera, tenho insert onde insiro uma informação, gostaria de saber como mudar a cor do fundo para verde ou amarelo caso o usuário escolha x ou y para ser inserido em um dos campos?

    OBS: A cor não é a da letra e sim a de fundo.

    quinta-feira, 1 de dezembro de 2016 19:44

Respostas

  • Olá,

    Vou dar um exemplo e espero que ajude:

    if (informacaoEscolhida == x)
    {
       dataGridView1.Rows.Add("coluna1", "coluna2");
       dataGridView1.Rows[dataGridView1.Rows.Count - 2].DefaultCellStyle.BackColor = Color.Red;
    }
    else
    {
       dataGridView1.Rows.Add("coluna1", "coluna2");
       dataGridView1.Rows[dataGridView1.Rows.Count - 2].DefaultCellStyle.BackColor = Color.Blue;
    }

    Algumas considerações:

    1) A condição (if) que eu coloquei foi só pra exemplificar a condição que mencionou na sua pergunta, de o usuário escolher um dado ou outro pra inserir

    2) Estou exemplificando minha grid com apenas duas colunas, por isso que o Rows.Add está daquela forma.

    3) Estou assumindo que essa datagrid esteja habilitada para insert manual diretamente nela (por isso estou usando -2 no código. Se sua grid não permite que ele digite e insira diretamente, deixe apenas -1)

    Espero ter ajudado!

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Sugerido como Resposta Douglas Agenor sexta-feira, 2 de dezembro de 2016 13:24
    • Marcado como Resposta SouthNew sábado, 3 de dezembro de 2016 18:37
    sexta-feira, 2 de dezembro de 2016 10:15

Todas as Respostas

  • Olá,

    Vou dar um exemplo e espero que ajude:

    if (informacaoEscolhida == x)
    {
       dataGridView1.Rows.Add("coluna1", "coluna2");
       dataGridView1.Rows[dataGridView1.Rows.Count - 2].DefaultCellStyle.BackColor = Color.Red;
    }
    else
    {
       dataGridView1.Rows.Add("coluna1", "coluna2");
       dataGridView1.Rows[dataGridView1.Rows.Count - 2].DefaultCellStyle.BackColor = Color.Blue;
    }

    Algumas considerações:

    1) A condição (if) que eu coloquei foi só pra exemplificar a condição que mencionou na sua pergunta, de o usuário escolher um dado ou outro pra inserir

    2) Estou exemplificando minha grid com apenas duas colunas, por isso que o Rows.Add está daquela forma.

    3) Estou assumindo que essa datagrid esteja habilitada para insert manual diretamente nela (por isso estou usando -2 no código. Se sua grid não permite que ele digite e insira diretamente, deixe apenas -1)

    Espero ter ajudado!

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Sugerido como Resposta Douglas Agenor sexta-feira, 2 de dezembro de 2016 13:24
    • Marcado como Resposta SouthNew sábado, 3 de dezembro de 2016 18:37
    sexta-feira, 2 de dezembro de 2016 10:15
  • Queria alguma coisa assim: 

    if(dataGridView1.Columns[7] == 'TITULAR'){
    
                dataGridView1.DefaultCellStyle.BackColor = System.Drawing.Color.LightGreen;
                }
    So que esse comando não é certo. Poderia me ajudar?


    • Editado SouthNew sexta-feira, 2 de dezembro de 2016 15:24
    sexta-feira, 2 de dezembro de 2016 15:21
  • Não entendi o que quer.

    Como mencionei, se quer formatar uma linha que acabou de inserir no grid, utilize meu exemplo.

    Para manipular uma linha você precisa especificar ela  (.Rows[index])


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    sexta-feira, 2 de dezembro de 2016 16:56
  • Eu gostaria de que se a informação da coluna 7 que esta no banco for  TITULAR a linha fica verde e se for SUBSTITUTA fica amarelo.

    No exemplo que achei ela ta ficando toda datagride em verde e eu soquero o lugar que esta Titular.

    MEU EXEMPLO:

    dataGridView1.DefaultCellStyle.BackColor = System.Drawing.Color.LightGreen;

    Acho que agora da pra entender melhor.

    Ja tentei dessa forma e da erro:

    private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
          DataGridViewRow r = dataGridView1.Rows[e.RowIndex];
          if (r["campo"].toString() == "TITULAR")
              r.DefaultCellStyle.BackColor = System.Drawing.Color.Red;
          else
              r.DefaultCellStyle.BackColor = System.Drawing.Color.White;
        }


    • Editado SouthNew sábado, 3 de dezembro de 2016 14:50
    sexta-feira, 2 de dezembro de 2016 21:44
  • Olá,

    Eu faria da seguinte forma.

    Logo após carregar os dados (não sei como está adicionando as linhas nessa grid, porém após ter esses dados preenchidos na grid, eu chamaria um método criado por mim que fizesse tal verificação). Segue o código de exemplo abaixo. (Inseri duas linhas de teste antes de chamar o método apenas para exemplificar):

            private void CarregarDados()
            {
                dataGridView1.Rows.Add("TITULAR");
                dataGridView1.Rows.Add("SUBSTITUTA");
                FormatarGrid();
            }
    
            private void FormatarGrid()
            {
                foreach (DataGridViewRow r in dataGridView1.Rows)
                {
                    if (r.Cells["NomeColuna"].Value.ToString().ToUpper().Equals("TITULAR"))
                        r.Cells["NomeColuna"].Style.BackColor = System.Drawing.Color.Red;
                    else
                        r.Cells["NomeColuna"].Style.BackColor = System.Drawing.Color.White;
                }
            }

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    domingo, 4 de dezembro de 2016 13:41