DATAGRIDVIEW COLUNA CHECKBOX
Boa tarde, pessoal, é o seguinte:
Crio um DataSet e preencho um DataGridView com o DataSource:
Quando o usuário clicar em um botão para excluir algum registro da tabela, eu crio uma coluna CheckBox no DataGridView.
Até aqui tudo bem;
Agora estou tentando clicar na coluna checkbox para marcar ou desmarcar o registro. Não estou conseguindo:
Seria algo mais ou menos assim:
Onde estou errando?
Crio um DataSet e preencho um DataGridView com o DataSource:
SqlCeDataAdapter da = new SqlCeDataAdapter(sql, Dados.conexao);
DataSet ds = new DataSet();
da.Fill(ds, [Ô]Tabela[Ô]);
dgv.DataSource = ds;
dgv.DataMember = [Ô]Tabela[Ô];
Quando o usuário clicar em um botão para excluir algum registro da tabela, eu crio uma coluna CheckBox no DataGridView.
DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();
checkColumn.HeaderText = [Ô][Ô];
checkColumn.Name = [Ô]check[Ô];
checkColumn.Width = 30;
dgv.Columns.Add(checkColumn);
dgv.Columns[[Ô]check[Ô]].DisplayIndex = 0;
Até aqui tudo bem;
Agora estou tentando clicar na coluna checkbox para marcar ou desmarcar o registro. Não estou conseguindo:
Seria algo mais ou menos assim:
private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
{
int indice = dgv.CurrentRow.Cells[[Ô]check[Ô]].ColumnIndex;
if (dgv.CurrentCell.ColumnIndex.Equals(indice))
{
[txt-color=#e80000] ====> aqui dá o erro:Object reference not set to an instance of an object.[/txt-color]
if (dgv.CurrentRow.Cells[[Ô]check[Ô]].Value.Equals(null))
{
dgv.CurrentRow.Cells[[Ô]check[Ô]].Value = true;
}
else
{
dgv.CurrentRow.Cells[[Ô]check[Ô]].Value = false;
}
}
}
Onde estou errando?
Pessoal, descobri o meu erro. Modifiquei o evento CellClick;
private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
{
int linha = dgv.CurrentRow.Cells[[Ô]check[Ô]].RowIndex;
int coluna = dgv.CurrentRow.Cells[[Ô]check[Ô]].ColumnIndex;
foreach (DataGridViewRow row in dgv.Rows)
{
foreach (DataGridViewCell cell in dgv.Rows[linha].Cells)
{
if (cell.ColumnIndex == coluna)
{
if (dgv.Rows[linha].Cells[coluna].Value == null || dgv.Rows[linha].Cells[coluna].Value.Equals(false))
{
dgv.Rows[linha].Cells[coluna].Value = true; // marcado
}
else
{
dgv.Rows[linha].Cells[coluna].Value = false; // desmarcado
}
}
}
}
}
Agora funcionou beleza.
private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
{
int linha = dgv.CurrentRow.Cells[[Ô]check[Ô]].RowIndex;
int coluna = dgv.CurrentRow.Cells[[Ô]check[Ô]].ColumnIndex;
foreach (DataGridViewRow row in dgv.Rows)
{
foreach (DataGridViewCell cell in dgv.Rows[linha].Cells)
{
if (cell.ColumnIndex == coluna)
{
if (dgv.Rows[linha].Cells[coluna].Value == null || dgv.Rows[linha].Cells[coluna].Value.Equals(false))
{
dgv.Rows[linha].Cells[coluna].Value = true; // marcado
}
else
{
dgv.Rows[linha].Cells[coluna].Value = false; // desmarcado
}
}
}
}
}
Agora funcionou beleza.
Desistiu de usar OOP?
Não desisti, não, é que estou ajudando na manutenção de outro sistema aqui na empresa e este daqui ainda não era baseado na OOP.
Mas você pode aplicar o mesmo princÃpio, nem que seja para uma entidade apenas. Você sabe o quanto facilita...
é que os [Ô]caras[Ô] aqui são demais, querem tudo pra ontem. Tenho que parar tudo o que estou fazendo pra alterar umas coisas que só por Deus mesmo.
Vivem inventando histórias, acho que pensam que eu não tenho nada pra fazer, é isso.
Mas depois pretendo alterar todos os módulos existentes usando OOP e quem sabe futuramente usando WebApi, né?
Vivem inventando histórias, acho que pensam que eu não tenho nada pra fazer, é isso.
Mas depois pretendo alterar todos os módulos existentes usando OOP e quem sabe futuramente usando WebApi, né?
E pode contar com minha ajuda pra isso
Tópico encerrado , respostas não são mais permitidas