0

Hello,

I want to search a specific column in ListView. I've coded searching however it always defaults to search the first column, how can i specify which column to search?

Here is my code:

Private Sub btnSearch_Click(sender As System.Object, e As System.EventArgs) Handles btnSearch.Click
        If txtSearchThoughts.Text IsNot "" Then
            'ListViewSearch.Focus()

            'For i = 0 To ListViewSearch.Items.Count - 1
            'If ListViewSearch.Items(i).SubItems(0).Text = txtSearchThoughts.Text Then
            'ListViewSearch.Items(i).Selected = True
            'End If
            'Next
            Dim itm As ListViewItem
            Dim i As Integer

            For i = 0 To ListViewSearch.Items.Count - 1
                ListViewSearch.Items(i).Selected = False
                ListViewSearch.Items(i).BackColor = Color.White
            Next

            With ListViewSearch
                itm = .FindItemWithText(txtSearchThoughts.Text, False, 0, True)

                If Not itm Is Nothing Then

                    '.TopItem = itm
                    .Items.Item(itm.Index).BackColor = Color.BurlyWood
                    .Items.Item(itm.Index).EnsureVisible()
                Else
                    MsgBox("No Record Found!")
                    For i = 0 To ListViewSearch.Items.Count - 1
                        ListViewSearch.Items(i).Selected = False
                        ListViewSearch.Items(i).BackColor = Color.White
                    Next
                    .Items(0).EnsureVisible()
                    .Items.Item(0).BackColor = Color.BurlyWood

                    txtSearchThoughts.SelectionStart = 0
                    txtSearchThoughts.SelectionLength = Len(txtSearchThoughts.Text)
                    txtSearchThoughts.Focus()
                End If
            End With
            itm = Nothing

        End If
    End Sub
2
Contributors
2
Replies
3
Views
5 Years
Discussion Span
Last Post by AndreRet
1

The following works however i cannot figure out how to add error handling:

        If txtSearchThoughts.Text IsNot "" Then
            ListViewSearch.Focus()

            For i = 0 To ListViewSearch.Items.Count - 1
                'Searches second column: SubItems(2)
                If ListViewSearch.Items(i).SubItems(2).Text = txtSearchThoughts.Text Then
                    ListViewSearch.Items(i).Selected = True
                End If
            Next

        End If
Votes + Comments
Nice, you changed to subitems(2)
0
If txtSearchThoughts.Text IsNot "" Then

''Change to ....

If Not txtSearchThoughts.Text = "" Then

Also, good conventional coding is to use vbNullString and not "" ... :)

If Not txtSearchThoughts.Text = vbNullString Then

To add error trapping, in the sub where you want to trap...

On error GoTo MyErrTrap

''All your code here as normal....

''IMPORTANT!!! After the code add exit sub...

Exit Sub

MyErrorTrap:
''Code here to do if an error occured...
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.