none
Condição if com checkbox RRS feed

  • Pergunta

  • Boa tarde amigos,

    Seguinte, na minha datagrid tem uma checbox que quando selecionado muda a cor da linha para verde, só que a condição do código abaixo só valida o select quando todas as linha estão selecionadas, alguém teria alguma sugestão?

    //checkbox//
    DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn();
                dgvcadven.Columns.Add(chk);
                chk.HeaderText = "SC";
                chk.Name = "chk";
                chk.TrueValue = true;
                chk.FalseValue = false;
     private void dgvcadven_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                foreach (DataGridViewRow row in dgvcadven.Rows)
                {
                    DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells["chk"];
                    if (chk.Value == chk.TrueValue)
                    {
                        this.dgvcadven.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.LightGreen;
                    }
                    else 
                    {
                        this.dgvcadven.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.LightPink;
                    }
                    
                }
            }

    Pesquisei vários exemplos e como sou novo nessa areá, não obtive uma resposta clara.

    Conto com vocês para me ajudar.

    Grato,

    att,

    Wesley moura

    quarta-feira, 3 de abril de 2013 15:33

Respostas

  • vais ter de armazenar este valores do checkbox numa tabela, depois quando abrir o form, voce vai a base de dados e carrega esta informacao no dgv.

    A flower cannot blossom without sunshine, and man cannot live without love.

    • Marcado como Resposta Wesley_Coelho domingo, 7 de abril de 2013 02:05
    sexta-feira, 5 de abril de 2013 17:59
    Moderador

Todas as Respostas

  • @Wesley boa tarde, já pensou em converter para bool o valor da celula, trabalho desta forma, pois acho mais simples e funciona.

    "A mente que se abre para uma nova idéia, jamais voltará a seu tamanho original".

    quarta-feira, 3 de abril de 2013 16:01
  • remove este codigo deste evento e coloca no evento

      private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                foreach (DataGridViewRow row in this.dataGridView1.Rows)
                {
                    DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells["chk"];
                    if (chk.Value == chk.TrueValue)
                    {
                        this.dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.LightGreen;
                    }
                    else
                    {
                        this.dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.LightPink;
                    }

                }
            }


    A flower cannot blossom without sunshine, and man cannot live without love.

    quarta-feira, 3 de abril de 2013 16:24
    Moderador
  • Com a dica do amigo Douglas e Levi. Consegui um resultado positivo,

    Só tem um problema como armazeno o resultado das Checkbox?

    Porque quando clico fora da datagrid os campos selecionados são resetados.

    Segue abaixo como meu código ficou:

     private void dgvcadven_CellClick(object sender, DataGridViewCellEventArgs e)
            {           
                foreach (DataGridViewRow row in this.dgvcadven.Rows)
                {
                    DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells["chk"];
                    if ((bool)chk.TrueValue == true)
                    {
                        this.dgvcadven.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.LightGreen;
                    }
                    else if ((bool)chk.FalseValue == false)
                    {
                        this.dgvcadven.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.LightGreen;
                    }
                }                   
            }

    Grato,

    att,

    Wesley Coelho.

    quarta-feira, 3 de abril de 2013 17:27
  • Bom dia a todos!

    Tava com um probleminha na datagrid que quando selecionava as checkbox e clicava no form os campos eram desmarcados, o problema tava no evento Click do form, consegui resolver.

    Agora gostaria de tirar mais uma duvida,

    Como posso salvar as checkbox que o usuário marcou na datagrid? De forma que se o usuário fecha o programa e abrir-lo novamente as checkbox's estarão marcadas e não desmarcadas.

    Agradeço a atenção.

    att,

    Wesley Coelho.

    sexta-feira, 5 de abril de 2013 14:07
  • vais ter de armazenar este valores do checkbox numa tabela, depois quando abrir o form, voce vai a base de dados e carrega esta informacao no dgv.

    A flower cannot blossom without sunshine, and man cannot live without love.

    • Marcado como Resposta Wesley_Coelho domingo, 7 de abril de 2013 02:05
    sexta-feira, 5 de abril de 2013 17:59
    Moderador