none
Como Setar uma linha do DataGrid via codigo RRS feed

  • Pergunta

  • Oi gente... tenhum um grid que de tempos em tempos é atualizado, para saber se chegou novos registros isso é feito atraves de um timer, se eu estiver posicionado na quinta linha do grid por exemplo e a atualização acontecer o curso vai para a primeira linha, como eu posso resolver esse problema, quando a atualização acontecer e eu estiver na linha 5 quero continuar nessa mesma linha, desde ja agradeço a atenção de vc's
    sexta-feira, 11 de julho de 2008 15:05

Respostas

  • ASN_ROCK, cara muito obrigado, so tinha testado o primeiro exemplo mas o segundo esta fazendo o que eu queria, valeu mesmo, estou ingressando na linguagem, muita coisa é novo ainda pra mim. grato. 

     ANS_ROCK wrote:

    Grande faz o seguinte:

     

    Antes da atualização começar salve o valor do index do registro em uma variável:

     

    Dim val as Integer = DataGridView1.CurrentRow.Index

     

    após a atualização execute:

     

    DataGridView1.Rows(val).Selected = True

     

    caso você queira selecionar uma célula específica faz assim

     

    DataGridView1.Rows(val).Cells(?).Selected = True

     

    Valeu!

     

    quarta-feira, 16 de julho de 2008 11:47

Todas as Respostas

  • Grande faz o seguinte:

     

    Antes da atualização começar salve o valor do index do registro em uma variável:

     

    Dim val as Integer = DataGridView1.CurrentRow.Index

     

    após a atualização execute:

     

    DataGridView1.Rows(val).Selected = True

     

    caso você queira selecionar uma célula específica faz assim

     

    DataGridView1.Rows(val).Cells(?).Selected = True

     

    Valeu!

     

    terça-feira, 15 de julho de 2008 08:25
  • Rock obrigado pela sua atenção em me responder. porem não resolveu, o codigo que vc postou ele na verdade esta selecionando varias linhas tipo, se eu estou na linha 5 quando ele executa esse codigo ele esta selecionando a linha 5 ate a linha um e o cursor na verdade esta indo para a linha 1, o que eu to precisando é se o curso esta na linha cinco depois da atualização gostaria que ele permanecesse na linha 5. Se vc puder me ajudar novamente agradeço. valeu.

     

    terça-feira, 15 de julho de 2008 12:56
  • Cara!

     

    1) Se está selecionando várias linhas tenta desabilitar a opção multiline selection da datagridView talvez resolva  a não ser que você precise selecionar várias linhas na grid caso contrário é só desabilitar.

     

    2) e se ele retornou para a linha um é porque ainda tinha alguma ação pendente ou seja talvez ele executou uma outra parte do código que seta a grid.  porque essa intrução ela funciona muito bem.

     

    3) Verifique o código do Timer e veja se ele não está passando duas vezes no mesmo lugar no momento da atualização.

    o que seria desnecesário. Já aconteceu isso comigo.

     

     

    terça-feira, 15 de julho de 2008 19:25
  • nettynhoo,

     

     A lógica do exemplo do ANS_ROCK é correcta. Se gravar seus dados via tableadapter, utilizar um bindingsource, este exemplo funciona :

     

    'No evento CellEndEdit do datagridview :

     

    Private Sub TeuDataGridView_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles TeuDataGridView.CellEndEdit

     

            'Guarda na variável a última posição alterada

            val = Me.TeuDataGridView.CurrentRow.Index

     

        End Sub

     

    'No botão ou timer que utliza para fazer update dos dados :

     

        Private Sub btnGravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGravar.Click

     

            'Faço o update

            Me.TeuTableAdapter.Update(Me.TeuDataSet.Tabela)

     

            'Atualizo o datagridview

            Me.TeuTableAdapter.Fill(Me.TeuDataSet.Tabela)

     

            'Seleciono a posição do último item alterado

            Me.TeuBindingSource.Position = val

     

            'Seleciono toda a linha

            Me.TeuDataGridView.CurrentRow.Selected = True

     

        End Sub

     

     

     Abraços

     

    terça-feira, 15 de julho de 2008 21:50
  • ASN_ROCK, cara muito obrigado, so tinha testado o primeiro exemplo mas o segundo esta fazendo o que eu queria, valeu mesmo, estou ingressando na linguagem, muita coisa é novo ainda pra mim. grato. 

     ANS_ROCK wrote:

    Grande faz o seguinte:

     

    Antes da atualização começar salve o valor do index do registro em uma variável:

     

    Dim val as Integer = DataGridView1.CurrentRow.Index

     

    após a atualização execute:

     

    DataGridView1.Rows(val).Selected = True

     

    caso você queira selecionar uma célula específica faz assim

     

    DataGridView1.Rows(val).Cells(?).Selected = True

     

    Valeu!

     

    quarta-feira, 16 de julho de 2008 11:47
  • nettynho para você que está começando é importantíssimo você conhecer os feitos do Macoratti eu praticamente aprendi a desenvolver aplicações .NET baseado em quase todos os exemplos que ele publica.

     

    aqui vai o end:

     

    http://www.macoratti.net/

     

    Bons Estudos!

    quarta-feira, 16 de julho de 2008 17:19