Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 506258
            [titulo] => Verificar checkbox em gridview
            [dataCadastro] => DateTime Object
                (
                    [date] => 2015-01-05 12:43:49
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 238223
            [status] => M
            [isExample] => 
            [NomeUsuario] => soeuseijothaz
            [Apelido] => jothaz
            [Foto] => 238223_20141108222927.jpg
            [Conteudo] => Consegui o efeito esperado com o seguinte código:
[code]
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("chk"))
{
ManipulaBotao();
}
}

private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("chk"))
{
ManipulaBotao();
}
}

private void ManipulaBotao()
{
button1.Enabled = false;
foreach (DataGridViewRow dr in dataGridView1.Rows)
{
if (bool.Parse(dr.Cells["chk"].EditedFormattedValue.ToString()))
{
button1.Enabled = true;
break;
}
}
}

[/code]

Inclui uma chamada ao método CellContentDoubleClick, se isto não for feito não vai funcionar.

Se o grid possuir muitas linhas pode afeta a performance, então deve-ser ficar atento a isto. ) )

Verificar checkbox em gridview

Jair Souza
   - 02 jan 2015

Tenho este código para verificar se no grid tem pelo menos um checkbox checked, se tiver deve liberar o botão "Devolução", mas está funcionando somente na última linha...

#Código

private void itemLocacaoDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

            foreach (DataGridViewRow dr in itemLocacaoDataGridView.Rows)
            {
                 if (bool.Parse(dr.Cells[0].EditedFormattedValue.ToString()))
                {
                    BtnDevolucao.Enabled = true;
                }
                else
                {
                    BtnDevolucao.Enabled = false;
                }

ou este, mas o resultado é o mesmo :
#Código
for (int i = 0; i < itemLocacaoDataGridView.Rows.Count; i++)
                {
                    if (bool.Parse(itemLocacaoDataGridView[0, i].EditedFormattedValue.ToString()))
                {
                    BtnDevolucao.Enabled = true;
                }
                else
                {
                    BtnDevolucao.Enabled = false;
                }

Clique na imagem para abrir em uma nova janela

Post mais votado

Jothaz
   - 05 jan 2015

Consegui o efeito esperado com o seguinte código:
#Código

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("chk"))
            {
                ManipulaBotao();
            }
        }

        private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("chk"))
            {
                ManipulaBotao();
            }
        }

        private void ManipulaBotao()
        {
            button1.Enabled = false;
            foreach (DataGridViewRow dr in dataGridView1.Rows)
            {
                if (bool.Parse(dr.Cells["chk"].EditedFormattedValue.ToString()))
                {
                    button1.Enabled = true;
                    break;
                }
            }
        }



Inclui uma chamada ao método CellContentDoubleClick, se isto não for feito não vai funcionar.

Se o grid possuir muitas linhas pode afeta a performance, então deve-ser ficar atento a isto.

1
|
0

Jothaz
   - 04 jan 2015

Tenta assim:

#Código

foreach (GridViewRow gvItem in SeuGridView.Rows)
{
	CheckBox ck;
	ck = (CheckBox)gvItem.FindControl("SeuCheck");
	if (ck.Checked)
	{
		 BtnDevolucao.Enabled = true;
		  break;
	}
}

Jair Souza
   - 04 jan 2015

Primeiro erro quando coloco o nome do meu grid :

Clique na imagem para abrir em uma nova janela

Se mudo no foreach para DataGridViewRow dá este outro erro :

Clique na imagem para abrir em uma nova janela

Será que está no evento certo ?

Jothaz
   - 05 jan 2015

Não vi que era windows forms, achei que web form.

Então favor desconsiderar esta resposta.

Sempre que você abrir um post é bom destacar que esta usando "windows form" ou "web form", assim facilitar a ajuda e fica mais produtivo.

Estou precisando de algo parecido em um windows form que tenho e estou tendo dificuldade e criar esta lógica.
Complica pois tem-se de preocupar com vários métodos: CellContentClick, CellValueChanged ou CellContentDoubleClick.

Se conseguir fazer posto o resultado aqui.

Jair Souza
   - 05 jan 2015

Funcionou, e não precisou do evento CellContentDoubleClick.

Valeu, muito obrigado !

Jothaz
   - 06 jan 2015


Citação:
Funcionou, e não precisou do evento CellContentDoubleClick.

Valeu, muito obrigado !


Sem querer ser chato, mas sendo chato, é prudente implementar usando o CellContentDoubleClick.

Dependendo da velocidade do duplo clique pode ocorrer do controle ficar habilitado sem nenhum check marcado.

O tratamento no método CellContentDoubleClick , para evitar aborrecimentos futuros.

Mas que bom que funcionou.

Jair Souza
   - 07 jan 2015

Realmente tens razão, tem que ter o CellContentDoubleClick.
Valeu !