Usuário com melhor resposta
Atualização DataGridView

Pergunta
-
Boa Tarde,
Tenho um datagrid que é atualizado de 5 em 5 segundos, coloquei um timer pra atualizar, o datagrid é preenchido perfeitamente, e as atualizações estão funcionando corretamente.
Porém como são vários registros, por exemplo se o usuário for ver algum registro mais pro fim, terá que descer a barra de rolagem, mais quando da os 5 segundos ele volta pra primeira linha do datagrid.
Gostaria que não atualizasse a barra de rolagem, somente atualizar as informações, e deixar a barra de rolagem no local que o usuário deixou.
Alguém poderia me ajudar ?
Obrigado.
Respostas
-
Boa noite
Mariana, uma solução seria você pegar a posição do "Scroll Bar" antes da atualização e após atualizar setar novamente a posição do "Scroll".
Segue um exemplo:
//Pega a posição antes int posicao = dataGridView1.FirstDisplayedScrollingRowIndex; //Processa e atualiza a Grid... //Seta a posição novamente dataGridView1.FirstDisplayedScrollingRowIndex = posicao;
Observação: Se for grande a quantidade de registros a ser atualizado. Você pode realizar um calculo pra tem a média do "scroll" por registros, somar com a nova quantidade e atualizar.
Espero ter ajudado.
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
- Sugerido como Resposta Silvaney terça-feira, 10 de maio de 2016 01:15
- Editado Silvaney terça-feira, 10 de maio de 2016 01:16 Correção
- Marcado como Resposta Mariana C. Costa terça-feira, 10 de maio de 2016 11:45
Todas as Respostas
-
Boa tarde Mariana, por que você não cria um método para preencher o Datagrid e chama ele nos botões e load do form? Assim você não precisaria do timer para ficar atualizando.
Toda vez que um registro for inserido, deletado ou alterado, o grid se atualizará automaticamente.
No caso do seu timer, a única solução é por mais uns segundos para a atualização.
-
O formulário é pra consulta de acesso, já tem o botão caso o usuário queira mudar o filtro, mais continua o time, com aqueles filtros, e como são muitos acessos o datagrid atualiza sempre.
Queria que ele atualizasse, porém sem alterar a barra de rolagem, sem voltar pro inicio do datagrid.
-
O datagrid está fazendo uma função de log? Exibindo todos os acessos?
Sobre o timer, tenho absoluta certeza de que toda vez que ele atualizar o grid, a barra de rolagem irá voltar ao começo.
Vamos esperar aí pra ver se alguém tem uma solução. A minha seria do método de preenchimento e etc.
Boa sorte.
- Editado Lailson Conceição segunda-feira, 9 de maio de 2016 20:51
-
É um sistema de acesso, com equipamentos, tipo catraca.
ai sempre que um usuário faz o acesso, atualiza esse grid, por esse motivo que ele atualiza, para o "porteiro" ter o controle dos acessos, sem precisar ficar atualizando.
Vamos aguardar, obrigado.- Editado Mariana C. Costa segunda-feira, 9 de maio de 2016 20:52
-
Boa noite
Mariana, uma solução seria você pegar a posição do "Scroll Bar" antes da atualização e após atualizar setar novamente a posição do "Scroll".
Segue um exemplo:
//Pega a posição antes int posicao = dataGridView1.FirstDisplayedScrollingRowIndex; //Processa e atualiza a Grid... //Seta a posição novamente dataGridView1.FirstDisplayedScrollingRowIndex = posicao;
Observação: Se for grande a quantidade de registros a ser atualizado. Você pode realizar um calculo pra tem a média do "scroll" por registros, somar com a nova quantidade e atualizar.
Espero ter ajudado.
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
- Sugerido como Resposta Silvaney terça-feira, 10 de maio de 2016 01:15
- Editado Silvaney terça-feira, 10 de maio de 2016 01:16 Correção
- Marcado como Resposta Mariana C. Costa terça-feira, 10 de maio de 2016 11:45
-
-