Usuário com melhor resposta
Como Setar uma linha do DataGrid via codigo

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
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!
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!
-
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.
-
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.
-
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
-
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!
-
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:
Bons Estudos!