I am trying to do a search on a datagridview from a string the operator enters into a textbox. I am searching the datagrid view on a sorted column of last names. I do not want to filter the datagridview. I would like the operator to be able to search for partial matches. As an example: If the operator is searching for the last name of wilson, they should be able to enter w, wi, wil, wils, wilso, or wilson into the text box and search the last name column for the first row that matches their entry. In this way if they search for "wil" they might land on a row and select it that has the last name of williams when they are actually looking for wilson. They will then be able to scroll down to the row they are looking for and select it. Sometimes the last names are misspelled and other times they operator may not be able to spell the last name.
The code I have will find the last name but only if it is a complete match. Can anyone help me with this?
Dim Found As Boolean = False Dim StringToSearch As String = "" Dim ValueToSearchFor As String = Me.TextBox1.Text.Trim.ToLower Dim CurrentRowIndex As Integer = 0 Try If DataGridView1.Rows.Count = 0 Then CurrentRowIndex = 0 Else CurrentRowIndex = DataGridView1.CurrentRow.Index + 1 End If If CurrentRowIndex > DataGridView1.Rows.Count Then CurrentRowIndex = DataGridView1.Rows.Count - 1 End If If DataGridView1.Rows.Count > 0 Then For Each gRow As DataGridViewRow In DataGridView1.Rows StringToSearch = gRow.Cells(1).Value.ToString.Trim.ToLower If StringToSearch Like (Me.TextBox1.Text) Then Dim myCurrentCell As DataGridViewCell = gRow.Cells(1) Dim myCurrentPosition As DataGridViewCell = gRow.Cells(0) DataGridView1.CurrentCell = myCurrentCell CurrentRowIndex = DataGridView1.CurrentRow.Index DataGridView1.CurrentRow.DefaultCellStyle.BackColor = Color.LightSkyBlue Found = True End If If Found Then Exit For