none
Como um CheckBox pode receber um DataGridView CheckBoxCell RRS feed

  • Pergunta

  • No meu DataGridView traz do Banco de Dados as informações do usuário, dentre elas se ele é administrador ou não, esta celula tem um DataGridViewCheckBoxCell.

    inserir a descrição da imagem aqui

    Quero passar o valor dela (True/False) para um CheckBox Control. Tentei usar o seguinte código, mas não funciona.

    Debugando, percebi que a variável adm sempre é True, mesmo vindo False do Banco e o CheckBox mesmo recebendo o valor, não é marcado, nada acontece.

    O CheckBox esta por padrão com o CheckState Indeterminate

    var adm = (DataGridViewCheckBoxCell)this.gridConsultaUsuario.CurrentRow.Cells[5];
    
    editarUsuario.chkAdm_consulta.Checked = adm.Selected;



    sexta-feira, 15 de janeiro de 2016 16:10

Respostas

  • Gabriel, para capturar se o item foi selecionado ou não use o seguinte código:

    dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString()

    Exemplo de codigo:

    private void Form1_Load(object sender, EventArgs e)
            {
                //cria um objeto DataTable
                DataTable dt = new DataTable();
                //inclui duas colunas no datatable definindo o seu tipo como booleano e string
                dt.Columns.Add("Estado", typeof(bool)); 
                dt.Columns.Add("Nome", typeof(string));
                //cria um array do tipo string com nomes
                string[] nomes = { "Macoratti", "Jefferson", "Janice", "Jessica", "Miriam" }; 
                //define um array com valores booleanos
                bool[] status = { true, true, false, false, false };   
                //inclui linhas e valores no datatable
                for (int i = 0; i < 5; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["Estado"] = status[i];
                    dr["Nome"] = nomes[i];
                    dt.Rows.Add(dr);
                }
                //vincula os valores do datatable no DataGridView
                dataGridView1.DataSource = dt; 
            }


    Vamos agora mostrar como podemos exibir os valores definidos na coluna do tipo checkbox do controle DataGridView.

    Para isso vamos usar o evento CellContentClick, este evento é disparado quando o usuário clica no conteúdo de uma célula.

    Abaixo temos o código para o tratamento do evento:

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                /// Este evento é disparado quando o usuário clica no conteúdo de uma célula
                /// Vamos exibir uma mensagem contendo os valores true ou valse refletindo os
                /// o valores da coluna checkbox
                ///
                //Verificamos se e somente se a celula checkbox (Estado) foi clicada
                if (e.ColumnIndex == dataGridView1.Columns["Estado"].Index) 
                {
                    //interrompe a edição
                    dataGridView1.EndEdit(); 
                    //exibe os valores da célula quando clicada: verdadeiro (true) ou falso (false)
                    MessageBox.Show("=> " + dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
                }
            }

    Para maiores informações:

    http://www.macoratti.net/11/12/c_chkgv.htm




    If the answer was helpful vote

    • Sugerido como Resposta Jean LLopes sexta-feira, 15 de janeiro de 2016 16:33
    • Marcado como Resposta Marcos SJ segunda-feira, 18 de janeiro de 2016 12:59
    sexta-feira, 15 de janeiro de 2016 16:32
  • Boa tarde.

    Acredito que a solução seja bastante simples:

    var adm = bool.Parse(gridConsultaUsuario.CurrentRow.Cells[5].Value.ToString());
    editarUsuario.chkAdm_consulta.Checked = adm;

    Att., Rafael Simor

    • Marcado como Resposta Marcos SJ segunda-feira, 18 de janeiro de 2016 12:58
    domingo, 17 de janeiro de 2016 22:17

Todas as Respostas

  • Gabriel, para capturar se o item foi selecionado ou não use o seguinte código:

    dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString()

    Exemplo de codigo:

    private void Form1_Load(object sender, EventArgs e)
            {
                //cria um objeto DataTable
                DataTable dt = new DataTable();
                //inclui duas colunas no datatable definindo o seu tipo como booleano e string
                dt.Columns.Add("Estado", typeof(bool)); 
                dt.Columns.Add("Nome", typeof(string));
                //cria um array do tipo string com nomes
                string[] nomes = { "Macoratti", "Jefferson", "Janice", "Jessica", "Miriam" }; 
                //define um array com valores booleanos
                bool[] status = { true, true, false, false, false };   
                //inclui linhas e valores no datatable
                for (int i = 0; i < 5; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["Estado"] = status[i];
                    dr["Nome"] = nomes[i];
                    dt.Rows.Add(dr);
                }
                //vincula os valores do datatable no DataGridView
                dataGridView1.DataSource = dt; 
            }


    Vamos agora mostrar como podemos exibir os valores definidos na coluna do tipo checkbox do controle DataGridView.

    Para isso vamos usar o evento CellContentClick, este evento é disparado quando o usuário clica no conteúdo de uma célula.

    Abaixo temos o código para o tratamento do evento:

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                /// Este evento é disparado quando o usuário clica no conteúdo de uma célula
                /// Vamos exibir uma mensagem contendo os valores true ou valse refletindo os
                /// o valores da coluna checkbox
                ///
                //Verificamos se e somente se a celula checkbox (Estado) foi clicada
                if (e.ColumnIndex == dataGridView1.Columns["Estado"].Index) 
                {
                    //interrompe a edição
                    dataGridView1.EndEdit(); 
                    //exibe os valores da célula quando clicada: verdadeiro (true) ou falso (false)
                    MessageBox.Show("=> " + dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
                }
            }

    Para maiores informações:

    http://www.macoratti.net/11/12/c_chkgv.htm




    If the answer was helpful vote

    • Sugerido como Resposta Jean LLopes sexta-feira, 15 de janeiro de 2016 16:33
    • Marcado como Resposta Marcos SJ segunda-feira, 18 de janeiro de 2016 12:59
    sexta-feira, 15 de janeiro de 2016 16:32
  • Boa tarde.

    Acredito que a solução seja bastante simples:

    var adm = bool.Parse(gridConsultaUsuario.CurrentRow.Cells[5].Value.ToString());
    editarUsuario.chkAdm_consulta.Checked = adm;

    Att., Rafael Simor

    • Marcado como Resposta Marcos SJ segunda-feira, 18 de janeiro de 2016 12:58
    domingo, 17 de janeiro de 2016 22:17
  • Bom dia,

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma thread nova.

    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.

    segunda-feira, 18 de janeiro de 2016 12:59