none
Atualização DataGridView RRS feed

  • 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.

    segunda-feira, 9 de maio de 2016 20:28

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
    segunda-feira, 9 de maio de 2016 21:24

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.

    segunda-feira, 9 de maio de 2016 20:39
  • 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.

    segunda-feira, 9 de maio de 2016 20:41
  • 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.


    segunda-feira, 9 de maio de 2016 20:50
  • É 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.
    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
    segunda-feira, 9 de maio de 2016 21:24
  • Obrigado novamente Silvaney ..

    Funcionou perfeitamente. 

    terça-feira, 10 de maio de 2016 11:45
  • Bom dia,

    Por nada, que bom que deu certo, qualquer dúvida pode postar!

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    terça-feira, 10 de maio de 2016 12:05