SELECIONAR NO DBGRID A LINHA CONFORME A PESQUISA

JMRF 12/05/2012 18:11:00
#401878

Boa tarde,

Vê se dá pra ajudar, por favor.

Como faço para que quando eu digitar uma pesquisa num textbox a linha no DBgrid fique selecionada e role até a parte de cima para que eu clicando nessa linha apareçam nos campos do Form os dados cadastrados.

Obrigado

JMRF
TECLA 26/05/2012 19:51:11
#402897
Sua dúvida é em linguagem VB.NET ou VB6?
JMRF 28/05/2012 08:23:12
#402936

Bom dia,

é VB.NET

Obrigado

JMRF
ROBSON220BASS 28/05/2012 09:12:42
#402938
Resposta escolhida
bom se é vb.net, entao sera datagridview me corrija se estiver errado.

porem considerando que no form tenha 1 textbox (textbox1) e datagridview (DGView1).

entao copie e cole

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

[ô]texto que representará o valor da célula do grid
Dim txt As String = Nothing
[ô]percorre linha por linha da grid
For Each row As DataGridViewRow In DGView1.Rows
[ô]percorre cada celula da linha
For Each cell As DataGridViewCell In DGView1.Rows(row.Index).Cells
[ô]se a caixa de texto nao estiver vazia prossegue, caso não
[ô]tira a seleção da linha do grid
If TextBox1.Text <> [Ô][Ô] Then
[ô]se for a primeira coluna, no caso a coluna Nome
If cell.ColumnIndex = 0 Then
[ô]atribui a valor a variavel txt, passando tudo convertido para minusculo
txt = cell.Value.ToString.ToLower
[ô]se essa variavel tiver caracteres que corresponde ao da pesquisa no texto,
[ô]tambem convertido para o minusculo
If txt.Contains(TextBox1.Text.ToLower) Then
[ô]faz o teste para ver se o valor da celula comeca com o mesmo valor
[ô]da pesquisa, caso sim, seleciona a linha do grid
If txt.StartsWith(TextBox1.Text.ToLower.Substring(0, TextBox1.Text.Length)) Then
Me.DGView1.Rows(cell.RowIndex).Selected = True
[ô]Me.DGView1.CurrentCell = Me.DGView1.Rows(cell.RowIndex).Cells(0)
Me.DGView1.MultiSelect = True
End If
End If
End If
Else
Me.DGView1.Rows(cell.RowIndex).Selected = False
Me.DGView1.MultiSelect = False
End If
Next
Next

end sub


qualquer duvida poste novamente.

JMRF 28/05/2012 14:25:35
#402986

Bo tarde,

ROBSON220BASS

Irei testar hoje à noite, e postarei o resultado, pois nesse momento estou no trabalho e não tenho aqui o VS 2010 instalado.

Obrigado pela dica

JMRF





JMRF 28/05/2012 21:04:46
#403029

Boa noite,

ROBSON220BASS

Infelizmente nada aconteceu nem selecionar a linha não selecionou muito menos rolou o DataGridView.
Abaixo o código que vc me mandou aplicado nos termos do meu Código.
Tem alguma instrução, para nós?

Obrigado

Um abraço

JMRF




Private Sub txtPesquisa_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtPesquisa.TextChanged

[ô]texto que representará o valor da célula do grid
Dim txt As String = Nothing
[ô]percorre linha por linha da grid
For Each row As DataGridViewRow In dgvestoque_atual.Rows
[ô]percorre cada celula da linha
For Each cell As DataGridViewCell In dgvestoque_atual.Rows(row.Index).Cells
[ô]se a caixa de texto nao estiver vazia prossegue, caso não
[ô]tira a seleção da linha do grid
If txtPesquisa.Text <> [Ô][Ô] Then
[ô]se for a primeira coluna, no caso a coluna Nome
If cell.ColumnIndex = 0 Then
[ô]atribui a valor a variavel txt, passando tudo convertido para minusculo
txt = cell.Value.ToString.ToLower
[ô]se essa variavel tiver caracteres que corresponde ao da pesquisa no texto,
[ô]tambem convertido para o minusculo
If txt.Contains(txtPesquisa.Text.ToLower) Then
[ô]faz o teste para ver se o valor da celula comeca com o mesmo valor
[ô]da pesquisa, caso sim, seleciona a linha do grid
If txt.StartsWith(txtPesquisa.Text.ToLower.Substring(0, txtPesquisa.Text.Length)) Then
Me.dgvestoque_atual.Rows(cell.RowIndex).Selected = True
[ô]Me.dgvestoque_atual.CurrentCell = Me.dgvestoque_atual.Rows(cell.RowIndex).Cells(0)
Me.dgvestoque_atual.MultiSelect = True
End If
End If
End If
Else
Me.dgvestoque_atual.Rows(cell.RowIndex).Selected = False
Me.dgvestoque_atual.MultiSelect = False
End If
Next
Next




[ô]Quando limpar a caixa de [Ô]Pesquisa por Nome do Produto[Ô], limpar todos os campos do formulário
If txtPesquisa.Text = [Ô][Ô] Then
txtcod_materiais_produtos.Text = [Ô][Ô]
txtMateriais_produtos.Text = [Ô][Ô]
txtUnidade.Text = [Ô][Ô]
txtEstoque_atual.Text = [Ô][Ô]
txtEstoque_minimo.Text = [Ô][Ô]
txtCodigo.Text = [Ô][Ô]

End If

End Sub

End Class
JMRF 28/05/2012 21:18:41
#403030

ROBSON220BASS,

Uma informação pra você. A primeira coluna do meu DataGridView é o Código do Produto (numérico) o Nome do Produto, está na segunda coluna. Não sei se tem alguma coisa a ver.

Obrigado

JMRF
JMRF 28/05/2012 21:47:13
#403032
ROBSON220BASS,

Estive observando o seguinte:
- Ao invés d'eu digitar o nome do Produto no [Ô]txtPesquisa.text[Ô], eu digitei o número do código do produto e realmene selecionou a linha certa. Mas tem um ítem de suma importância que é o seguinte:
1- Eu quero que se a linha selecionada for, por exemplo, a linha 100 ou 54, ou 235 etc a linha selecionada venha para o lugar da primeira ou seja o DBGrid efetue um roll e a linha selecionada apareça visivel no DBGrid e não fique selecionada estática onde está e eu tenha que rolar o DBGrid e localizar a linha. Pode me orientar nesse sentido, por favor?


Obrigado

Um abração

JMRF
LEANTRONIC 28/05/2012 22:16:00
#403035
JMRF é isso q quero fazer no meu aplicativo porém em determinados computadores demora mto pra carregar a grid inteira, vc toda vez q abre essa janela vc da um select Codigo, produto, ... from produtos
sem nenhuma instrução?
desculpa disvirtuar o topico, vou procurar alguma coisa pra te ajudar
ROBSON220BASS 29/05/2012 00:37:57
#403048
[ô]texto que representará o valor da célula do grid
Dim txt As String = Nothing
[ô]percorre linha por linha da grid
For Each row As DataGridViewRow In dgvestoque_atual.Rows
[ô]percorre cada celula da linha
For Each cell As DataGridViewCell In dgvestoque_atual.Rows(row.Index).Cells
[ô]se a caixa de texto nao estiver vazia prossegue, caso não
[ô]tira a seleção da linha do grid
If txtPesquisa.Text <> [Ô][Ô] Then
[ô]se for a primeira coluna, no caso a coluna Nome
If cell.ColumnIndex = 0 Then [txt-color=#e80000][ô]==============>>>>>>>>>> o numero 0 (zero) indica que a pesquisa sera na primeira coluna(altere as suas necessidades)[/txt-color]
[ô]atribui a valor a variavel txt, passando tudo convertido para minusculo
txt = cell.Value.ToString.ToLower
[ô]se essa variavel tiver caracteres que corresponde ao da pesquisa no texto,
[ô]tambem convertido para o minusculo
If txt.Contains(txtPesquisa.Text.ToLower) Then
[ô]faz o teste para ver se o valor da celula comeca com o mesmo valor
[ô]da pesquisa, caso sim, seleciona a linha do grid
If txt.StartsWith(txtPesquisa.Text.ToLower.Substring(0, txtPesquisa.Text.Length)) Then
Me.dgvestoque_atual.Rows(cell.RowIndex).Selected = True
[ô]Me.dgvestoque_atual.CurrentCell = Me.dgvestoque_atual.Rows(cell.RowIndex).Cells(0) [txt-color=#e80000][ô]==========> esta aqui mostra a linha selecionada na tela, não move ela
[ô]para a primeira linha, mas faz o datagridview rolar ate ela de forma que fique visível sem que você tenha que ir ate ela.[/txt-color]
Me.dgvestoque_atual.MultiSelect = True
End If
End If
End If
Else
Me.dgvestoque_atual.Rows(cell.RowIndex).Selected = False
Me.dgvestoque_atual.MultiSelect = False
End If
Next
Next



qualquer coisa baixe este codigo-fonte aqui do site, que deixei para download:

http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=9106


ate+
JMRF 29/05/2012 09:27:43
#403057

Bom dia,

ROBSON220BASS

Vou testar na hora do almoço. Ontem à noite fiz um teste mas tenho só 5 ítens cadastrados então eu comprimi o DBGrid em duas linhas e fiz a pesquisa para ver se a linha 5 aparecia selecionada e não rolou, não fez o SCROLL, vou cadastrar mais ítens e ver de rola legal.

Postarei o resultado.

Obrigado.

JMRF
Página 1 de 2 [16 registro(s)]
Tópico encerrado , respostas não são mais permitidas