none
Duvida em coluna CheckBox em datagrid c# RRS feed

  • Pergunta

  • Boa tarde,

    Tenho um datagrid q ele tem uma coluna CheckBox.

    Fora isso também tenho um botão.

    Porém eu só quero que o botão fique "Enabled = true" quando estiver alguma CheckBox marcado como true no datagrid casa não tenha nem um, o botão fique "Enabled = false".

    Como faço isso? Alguém pode me ajudar?

    Desde já agradeço pela atenção.

    • Editado Marcos SJ terça-feira, 4 de agosto de 2015 15:59 Ortografia
    terça-feira, 4 de agosto de 2015 15:48

Respostas

  • Para fazer isso você terá de varrer sua grid para verificar o valor do chexkBox veja aqui essa Thread

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    • Marcado como Resposta Rhael_Andrade terça-feira, 4 de agosto de 2015 19:32
    • Não Marcado como Resposta Rhael_Andrade terça-feira, 4 de agosto de 2015 19:32
    • Sugerido como Resposta Mr. GMSOFT quarta-feira, 5 de agosto de 2015 21:42
    • Marcado como Resposta Marcos SJ quinta-feira, 24 de setembro de 2015 17:27
    terça-feira, 4 de agosto de 2015 18:59
  • Nesse caso você quer que o botao fica Enable quando tiver ao menos um marcado correto, você pode colocar um contador enquanto esta verificando, e comparar DatagridView.Rows.Count==contador e vai incrementar a cada CheckBox que estiver marcado, e no else você so vai marcar Enable=false se o total de linhas da grid for diferente do contador ou seja não existem itens marcados

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel


    • Editado Mr. GMSOFT quarta-feira, 5 de agosto de 2015 21:42
    • Marcado como Resposta Marcos SJ quinta-feira, 6 de agosto de 2015 12:40
    quarta-feira, 5 de agosto de 2015 21:39

Todas as Respostas

  • Para fazer isso você terá de varrer sua grid para verificar o valor do chexkBox veja aqui essa Thread

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    • Marcado como Resposta Rhael_Andrade terça-feira, 4 de agosto de 2015 19:32
    • Não Marcado como Resposta Rhael_Andrade terça-feira, 4 de agosto de 2015 19:32
    • Sugerido como Resposta Mr. GMSOFT quarta-feira, 5 de agosto de 2015 21:42
    • Marcado como Resposta Marcos SJ quinta-feira, 24 de setembro de 2015 17:27
    terça-feira, 4 de agosto de 2015 18:59
  • Mr.GMSORF

    fiz da seguinte forma

       private void datagrid_Ativ_CurrentCellChanged(object sender, EventArgs e)
            {
                if (datagrid_Ativ.CurrentCell is DataGridViewCheckBoxCell)
                {
                    datagrid_Ativ.CommitEdit(DataGridViewDataErrorContexts.Commit);
                }
            }
    
            private void datagrid_Ativ_CellValidated(object sender, DataGridViewCellEventArgs e)
            {
                //Aqui eu coloquei a logica que eu queria, quando fosse marcado ou não. ex:
                if (Convert.ToBoolean(datagrid_Ativ.Rows[datagrid_Ativ.CurrentRow.Index].Cells[0].Value) == true)
                       bt_Baixar_slecao.Enabled = true;
                   // MessageBox.Show("marcado");
                else
                    bt_Baixar_slecao.Enabled = false;
                   // MessageBox.Show("desmarcado");
            }

    porem se eu marcar 4 campos do datagrid o botão ficar "bt_Baixar_slecao.Enabled = true;" ate ai ta certo porem quando eu desmarco 1 campos da coluna era pra ele ficar ainda como "bt_Baixar_slecao.Enabled = true;" pq ainda teria 3 marcados só ficaria "bt_Baixar_slecao.Enabled = false;" quando estive-se apenas um.

    o fazer pra q ele fique da forma q expliquei.


    terça-feira, 4 de agosto de 2015 19:36
  • Boa tarde como faço pra fazer uma verificação se minha coluna DataGridViewCheckBoxColumn existe algum campo marcado

    der de já agradeço pela atenção.

    • Mesclado Marcos SJ quinta-feira, 6 de agosto de 2015 12:33 Thread duplicada
    quarta-feira, 5 de agosto de 2015 15:56
  • Olá Rhael_Andrade,

    Tudo bem?

    Poderia informar de maneira mais detalhada o que precisa fazer?

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 5 de agosto de 2015 19:57
  • tenho o datagrid q contem uma coluna DataGridViewCheckBoxColumn conforme a imagem abaixo

    porem se vc observa tenho um botão "Baixa selecionadas" ou seja eu preciso verificar ao clicar na coluna DataGridViewCheckBoxColumn se tiver mais q 1 campo selecionado como true da coluna o botão fique como bt_Baixar_slecao.Enabled = true se for igual a 1 ou menor que 1 ele fique como bt_Baixar_slecao.Enabled = false.

    quarta-feira, 5 de agosto de 2015 20:20
  • Eu utilizo essa função:

    public static bool isChecked(DataGridViewRow r, string strColuna)
    {
    
       DataGridViewCheckBoxCell oCell = r.Cells[strColuna] as DataGridViewCheckBoxCell;
       return (null != oCell && null != oCell.Value && true == (bool)oCell.Value);
    }

    e para chamá-la pode ser em algum evento da linha do datagridView verificando linha a linha ou em um botão verificando todas as linhas:

    foreach (DataGridViewRow r in seuDataGridView.Rows)
    {
        if (isChecked(r, "NOME_DA_SUA_checkBoxColumn"))
        {
            MessageBox.Show("A Linha " +  r.Index + " Está Checada!");
        }
    }


    Natan


    • Editado 'Natan Silva quarta-feira, 5 de agosto de 2015 20:27
    quarta-feira, 5 de agosto de 2015 20:26
  • estamos quase la

    ex: vamos supor q temos 10 titulos ele tem q verificar se alguns dos 10 esta como true se tiver  bt_Baixar_slecao.Enabled = true se não  bt_Baixar_slecao.Enabled = false

    da forma q esta ai ele percorre mais fikei meio confuso.

    quarta-feira, 5 de agosto de 2015 21:03
  • Se você quer apenas contar....

    int q = 0;
    foreach (DataGridViewRow r in seuDataGridView.Rows)
    {
        if (isChecked(r, "NOME_DA_SUA_checkBoxColumn"))
        {
            q++;
        }
    }
    
    bt_Baixar_slecao.Enabled = (q > 0);


    Natan

    quarta-feira, 5 de agosto de 2015 21:12
  • Nesse caso você quer que o botao fica Enable quando tiver ao menos um marcado correto, você pode colocar um contador enquanto esta verificando, e comparar DatagridView.Rows.Count==contador e vai incrementar a cada CheckBox que estiver marcado, e no else você so vai marcar Enable=false se o total de linhas da grid for diferente do contador ou seja não existem itens marcados

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel


    • Editado Mr. GMSOFT quarta-feira, 5 de agosto de 2015 21:42
    • Marcado como Resposta Marcos SJ quinta-feira, 6 de agosto de 2015 12:40
    quarta-feira, 5 de agosto de 2015 21:39
  • Thread duplicada aqui veja a resposta

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel


    • Editado Mr. GMSOFT quarta-feira, 5 de agosto de 2015 21:45 Thread Duplicada
    quarta-feira, 5 de agosto de 2015 21:45
  • Bom dia Mr. GMSOFT,

    Muito obrigado pela colaboração no Fórum, não somente com o compartilhamento do seu conhecimento mas também no auxílio em deixar o Fórum mais organizado.

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 6 de agosto de 2015 12:40