Usuário com melhor resposta
Erro! Ocultando uma linha no datagridview.

Pergunta
-
Estou tendo um erro ao tentar ocultar uma linha do datagridview que possui como datasource uma coleção personalizada, o seguinte código foi usado:
int i = this.dgvTelefones.SelectedRows[0].Index;
dgvTelefones.ClearSelection();
this.dgvTelefones.Rows[ i ].Visible = false;
No entanto ele me retorna a seguinte mensagem de erro:
“Não é possível tornar invisível a linha associada à posição do gerenciador de moeda.”
O problema é que não estou usando o dataset mais sim classes próprias, além disso gostaria de saber se tem como anexar o datagridview a uma propriedade dos items da coleção, por exemplo quando excluímos uma linha em um datatable ela está la mais não é mais visível, é marcada como escluída mais precisa estar lá para ser retornada ao dataadapter que por usa vez vai procurar e excluir no banco de dados...Gostaria de criar um comportamente semelhante, alguém ai tem alguma dica ou algum site com algo parecido, pode ser em inglês não tem problema não.
Muito obrigado.
Respostas
-
Caro Carlos deixa eu te falar uma coisa, não importa da onde os dados grid estão vindo, o problema aqui
está relacionado com o bind do grid.
Abaixo tenho algumas linha de código, coloque elas antes de efetuar algo do tipo que você estava usando:
CurrencyManager cm = (CurrencyManager)BindingContext[dgvTelefones.DataSource];
cm.EndCurrentEdit();
cm.ResumeBinding();
cm.SuspendBinding();int i = this.dgvTelefones.SelectedRows[0].Index;
dgvTelefones.ClearSelection();
this.dgvTelefones.Rows[ i ].Visible = false;
Eu sei que vai funcionar ok.
Chuck.- Sugerido como Resposta USilvestre terça-feira, 22 de setembro de 2009 13:30
- Marcado como Resposta Fernanda SimõesModerator terça-feira, 22 de setembro de 2009 16:18
Todas as Respostas
-
Caro Carlos deixa eu te falar uma coisa, não importa da onde os dados grid estão vindo, o problema aqui
está relacionado com o bind do grid.
Abaixo tenho algumas linha de código, coloque elas antes de efetuar algo do tipo que você estava usando:
CurrencyManager cm = (CurrencyManager)BindingContext[dgvTelefones.DataSource];
cm.EndCurrentEdit();
cm.ResumeBinding();
cm.SuspendBinding();int i = this.dgvTelefones.SelectedRows[0].Index;
dgvTelefones.ClearSelection();
this.dgvTelefones.Rows[ i ].Visible = false;
Eu sei que vai funcionar ok.
Chuck.- Sugerido como Resposta USilvestre terça-feira, 22 de setembro de 2009 13:30
- Marcado como Resposta Fernanda SimõesModerator terça-feira, 22 de setembro de 2009 16:18
-
Aproveitando a deixa pessoal,
agora como eu faço para reexibir essas linhas ?
No meu caso existe um botão que eu quero simplismente exibir TODAS as linhas (caso haja alguma linha oculta).
Como eu faria???
Obrigado!!!
Atenciosamente, USilvestre - usilvestre@gmail.com - -
-
Opa.
Eu to com um problema parecido.
Estou usando uma datagridview para listar os nomes clientes cadastrados em meu programa, e ao clicar no nome e no botao ler, as demais informações relativas ao cliente aparecem em diversas textbox ao lado.
Mas para isto, tenho que inserir na datagridview tanto o nome do cliente, quando o código do cliente (pk), por que é a pk que me retorna os dados completos do clientes (tendo em vista que duas pessoas podem possuir o mesmo nome).
Eu gostaria de ocultar a linha 1 da datagridview, que no caso é a idcliente.
Alguem tem alguma sugestão?
estou usando o visual studio 2008.
Obrigado.
Gustavo
-