Usuário com melhor resposta
Datagridview - datasource - propriedade Count

Pergunta
-
Não sei o que está acontecendo com este trecho do meu código:
Tenho um datagridview que é preenchido com datasource (ListaGrps é um comando Linq).
Logo após adicionar um registro com o Entities (context.PES_GRUPOS.Add(grp);), deve carregar novamente o DGV. Quando passa pela linha do datasource, a propriedade Count é = 1.
Só que na linha seguinte, o Rows.Count do DGV é zero! Mas o registro novo está lá na base de dados.
dgvGrupos.DataSource = grp.ListaGrps(_idPess);
if (dgvGrupos.Rows.Count > 0) { .... }
Respostas
-
Paulo,
Desculpe, falha minha, não havia entendido que era Windows Form. No caso, a propriedade .Rows só será preenchida quando a renderização terminar, você pode usar o evento DataGridView.DataBindingComplete pra isso.
Referência: https://stackoverflow.com/questions/17618992/datagridview-rows-are-0-even-though-i-have-a-datasource
Rafael Esquiçato Professional Scrum Master MCP, MCTS
- Marcado como Resposta Filipe B CastroModerator quinta-feira, 31 de agosto de 2017 20:44
Todas as Respostas
-
-
Olá, Rafael,
Fiz
dgvGrupos.DataSource = grp.ListaGrps(_idPess);
dgvGrupos.DataBind();
if (dgvGrupos.Rows.Count > 0)
{mas aparece a mensagem:
"DataGridView" não contém uma definição para "DataBind" e não foi possível encontrar nenhum método de extensão "DataBind" que aceite um primeiro argumento do tipo "DataGridView" (há uma diretiva de uso ou referência de assembly ausente?)
Adicionei a referência System.Web.UI (embora não esteja programando para web), mas não fez diferença.
-
Paulo,
Desculpe, falha minha, não havia entendido que era Windows Form. No caso, a propriedade .Rows só será preenchida quando a renderização terminar, você pode usar o evento DataGridView.DataBindingComplete pra isso.
Referência: https://stackoverflow.com/questions/17618992/datagridview-rows-are-0-even-though-i-have-a-datasource
Rafael Esquiçato Professional Scrum Master MCP, MCTS
- Marcado como Resposta Filipe B CastroModerator quinta-feira, 31 de agosto de 2017 20:44
-
Analisando melhor, vi que o problema é um pouco mais estranho. Quando existem dados da pessoa na tabela de Grupos e é acrescentado mais um registro, o datagridview atualiza corretamente. Mesmo que sejam todos os registros deletados, ao adicionar o primeiro a atualização ocorre perfeitamente.
A falha aparece quando o formulário é aberto e a pessoa ainda não tem registro na tabela de Grupos. Ao adicionar um registro, os dados aparecem na tabela e o Datasource do datagridview aparentemente funciona (count = 1). Mas a propriedade .Rows.Count fica zerada.
Assim parece que os dados não foram incluídos e a tendência do usuário é repetir a digitação.
Não sei se consegui explicar bem.