Jump to content

[Resolvido] [Ajuda] Procurar valor em apenas uma coluna Listview


Recommended Posts

Posted

É possível procurar um valor em apenas uma coluna da Listview?

Já pesquisei de várias maneiras e não encontro a resposta em lado nenhum.

O meu código procura em todos os items da listview, no entanto apenas queria pesquisar o valor na coluna 3 que é a coluna da descrição dos artigos existentes na listview:


Dim Pesquisa As String
	Pesquisa = InputBox("Introduza a parcialidade da descrição a procurar", "Procurar por Descrição")

	Dim itemSearch As ListViewItem = FindListViewText(Me.ListView1, Pesquisa.ToString)

	If itemSearch IsNot Nothing Then

				Me.ListView1.TopItem = itemSearch
				Me.ListView1.TopItem.Selected = True

	Else

		MessageBox.Show("Não foi encontrado nenhum artigo com essa descrição!" & vbCrLf & "Volte a tentar com outro termo", "Pesquisar por Descrição", MessageBoxButtons.OK, MessageBoxIcon.Information)

	End If
Posted
For Each LVI As ListViewItem In ListView1
   If LVI.SubItems(2).Text.ToLower.Contains(Pesquisa.ToLower) Then
       'fazer qualquer coisa com o item. LVI representa um item onde a string pesquisa foi encontrada na terceira coluna
   End If
Next

É natural que tenha algum erro. Estou a escrever de cabeça. Não posso verificar isso agora no IDE

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Posted

Obrigado Ribeiro55 🙂

Foi só corrigir a primeira linha ao acrescentar o ".items"

For Each LVI As ListViewItem In ListView1.Items
               If LVI.SubItems(2).Text.ToLower.Contains(Pesquisa.ToLower) Then

                   Me.ListView1.TopItem = itemSearch
                   Me.ListView1.TopItem.Selected = True

               End If
           Next


Else
           MessageBox.Show("Não foi encontrado nenhum artigo com essa descrição!" & vbCrLf & "Volte a tentar com outro termo", "Pesquisar por Descrição", MessageBoxButtons.OK, MessageBoxIcon.Information)
       End If

Agora só falta mesmo criar um alerta para quando o valor existir mas não se encontrar na coluna desejada (neste caso a coluna com index 2).

O problema é como identificar o fim do ciclo For Each, existe alguma instrução para isso? É que nem um contador posso colocar visto que não sei o fim do ciclo.

Posted

Podes saber o fim do ciclo. Podes usar um ciclo For normal.

For i as Integer = 0 To ListView1.Items.Count
   Dim LVI As ListViewItem = ListView1.Items(i)
   'tcharan
Next

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Posted

Tens toda a razão, copiar código é fácil, entende-lo é outra coisa 😛

Tive que aldrabar, mas o que importa é que está a funcionar!



Try
           Dim Pesquisa_Ref As String
           Pesquisa_Ref = InputBox("Introduza a parcialidade da descrição a procurar", "Procurar por Descrição")

           Dim itemSearch As ListViewItem = FindListViewText(Me.ListView1, Pesquisa_Ref.ToString)
           If itemSearch IsNot Nothing Then

               For i As Integer = 0 To ListView1.Items.Count

                   Dim LVI As ListViewItem = ListView1.Items(i)

                   If LVI.SubItems(2).Text.ToLower.Contains(Pesquisa_Ref.ToLower) Then

                       Me.ListView1.TopItem = itemSearch
                       Me.ListView1.TopItem.Selected = True

                       Exit For

                   Else

                       If LVI.SubItems(0).Text.ToLower.Contains(Pesquisa_Ref.ToLower) Or LVI.SubItems(1).Text.ToLower.Contains(Pesquisa_Ref.ToLower) Then
                           MessageBox.Show("Não foi encontrado nenhum artigo com essa descrição!" & vbCrLf & "Volte a tentar com outro termo", "Pesquisar por Descrição", MessageBoxButtons.OK, MessageBoxIcon.Information)
                           Exit For
                       End If

                   End If

               Next

           Else

               MessageBox.Show("Não foi encontrado nenhum artigo com essa descrição!" & vbCrLf & "Volte a tentar com outro termo", "Pesquisar por Descrição", MessageBoxButtons.OK, MessageBoxIcon.Information)

           End If

       Catch ex As Exception
       End Try

Mais uma vez, obrigado Ribeiro 👍

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.