Datagridview Spalte mit String durchsuchen mit Teilausdruck

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Datagridview Spalte mit String durchsuchen mit Teilausdruck

    Hallo,

    ich weiß das es eine Möglichkeit gibt, einen bestimmten Ausdruck / Teilausdruck (z.B. Erdbeere davon als Eingabe zur Suche Erd oder beere) innerhalb eines Datagridview über die Funktion BindingSource.Find zu suchen...
    Aber mit dieser Methode werden nur ganze Ausdrücke "gesucht" und man müsste "Erdbeere" eingeben...
    Da ich sonst immer per Typisiertem Dataset usw. arbeite und die Daten direkt in der DB abfrage... tu ich mir gerade etwas schwer.
    Habe heute auch schon ganzen Nachmittag gesucht, aber ich finde einfach nicht die passende Lösung.

    Zur Frage warum ich nicht direkt in der DB suche... Leider ist dies ein Datagridview wo direkt eingaben gemacht werden und erst gespeichert wird, wenn alle Angaben gemacht wurden.....

    Mein Ansatz derzeit so:

    VB.NET-Quellcode

    1. Private Sub Tstxb_op_kundenname_KeyDown(sender As Object, e As KeyEventArgs) Handles Tstxb_op_kundenname.KeyDown
    2. If e.KeyCode = Keys.Enter Then
    3. If Tstxb_op_kundenname.Text = "" Then Exit Sub
    4. Try
    5. Dim pos As Integer = CInt(BU_Debitor_BelegstamBindingSource.Find("BUDZFirmenname", Tstxb_op_kundenname.Text))
    6. If pos >= 0 Then
    7. BU_Debitor_BelegstamBindingSource.Position = pos
    8. dgv_Debitor_Belegstam.Rows(pos).Selected = True
    9. End If
    10. Catch ex As Exception
    11. MessageBox.Show(ex.Message & vbCrLf & ex.StackTrace, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
    12. End Try
    13. End If
    14. End Sub


    Wie Könnte ich nun das ".Find" dazu bringen, dass er auch mit einem Teilausdruck arbeitet.

    Vielleicht hat von euch einer einen Tipp für mich ....

    Vielen Dank vorab, viele Grüß M

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim foundRow = DS1.BU_Debitor_Belegstam.FirstOrDefault(Function(r) r.BUDZFirmenname.Contains(Tstxb_op_kundenname.Text))
    3. If foundRow Is Nothing Then Exit Sub
    4. BU_Debitor_BelegstamBindingSource.Position = DS1.BU_Debitor_Belegstam.Rows.IndexOf(foundRow)
    5. End Sub
    @michl75 Dafür gibt es den Hilfreich-Button. ;)
    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!