suchfunktion im DataGridView

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von SystemUnknow.

    suchfunktion im DataGridView

    Hallo,
    ich habe mit dem unten gezeigten Code eine suchfunktion die mir auch gleich das oder die Ergebnisse im DGV farbig anzeigt.. das Problem was ich habe ist,
    dass wenn ich eine Teilsuche mache wo nur nen teil einer Nummer vorhanden ist dann sucht er mir da nichts. Gibt es da eine einfache Lösung?

    VB.NET-Quellcode

    1. #Region "Suche im DataGridView"
    2. Private ReadOnly Property SelectedColor() As Color
    3. Get
    4. Return Color.BlueViolet 'Hintergrund Farbe der gefundenen Zelle
    5. End Get
    6. End Property
    7. Private ReadOnly Property SelectedForeColor() As Color
    8. Get
    9. Return Color.White 'Schrift Farbe der gefundenen Zelle
    10. End Get
    11. End Property
    12. Private Sub SetCellBackGroundToWhiteColor(ByVal dgv As DataGridView)
    13. Try
    14. For Rows As Integer = 0 To dgv.RowCount - 1
    15. dgv.Rows(Rows).DefaultCellStyle.BackColor = Color.White
    16. dgv.Rows(Rows).DefaultCellStyle.ForeColor = Color.Black
    17. Next
    18. Catch ex As Exception
    19. MessageBox.Show(ex.Message.ToString(), "Info")
    20. End Try
    21. End Sub
    22. Private Sub FindAndSelect(ByVal dgv As DataGridView, ByVal SearchWhat As String)
    23. If String.IsNullOrEmpty(SearchWhat) Then
    24. MessageBox.Show("Benoetigte Eingabe fehlt!", "Info")
    25. SetCellBackGroundToWhiteColor(dgv)
    26. Exit Sub
    27. End If
    28. Try
    29. With dgv
    30. SetCellBackGroundToWhiteColor(dgv)
    31. For Column As Integer = 0 To .ColumnCount - 1
    32. For Rows As Integer = 0 To .RowCount - 1
    33. If dgv(Column, Rows).Value IsNot Nothing AndAlso dgv(Column, Rows).Value.ToString().ToUpper = SearchWhat.ToUpper Then 'ToUpper sorgt für komplette großschreibung im Hintergrund
    34. .Rows(Rows).DefaultCellStyle.BackColor = SelectedColor()
    35. .Rows(Rows).DefaultCellStyle.ForeColor = SelectedForeColor()
    36. DataGridView1.FirstDisplayedScrollingRowIndex = Rows ' springt in die Zeile die markiert wurde
    37. End If
    38. Next
    39. Next
    40. End With
    41. Catch ex As Exception
    42. MessageBox.Show(ex.Message.ToString(), "Info")
    43. End Try
    44. End Sub
    45. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    46. With Me : .FindAndSelect(.DataGridView1, .TextBox1.Text) : End With
    47. End Sub
    48. #End Region

    VB.NET-Quellcode

    1. If dgv(Column, Rows).Value IsNot Nothing AndAlso dgv(Column, Rows).Value.ToString().ToUpper = SearchWhat.ToUpper Then
    1. Hol Dir den Value in eine separate Variable, da kannst Du beim Debuggen reinsehen.
    2. Du vergleichst ja den gesamten String. Wenn Du nur Teile suchst, verwende String.Contains()
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!