Datagridview Filtern via TextBox

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von shaebich.

    Datagridview Filtern via TextBox

    Hallo an alle :)

    Ich habe eine Datengebundene DGV und habe via TextBox einen eigenen Filter mit folgenden Code gesetzt.

    Me.Table1BindingSource.Filter = "Artikelnummer= '" & Me.TextBox1.Text & "'"

    das funktioniert auch soweit ganz gut. Das ergebniss wird angezeigt.

    Nun zu meiner Frage,
    wenn ich den inhalt meiner TextBox lösche und wieder mit dem Button bestätige, dann soll er mir wieder alle Datensätze in der DGV anzeigen.
    Also auf gut Deutsch, den Filter entfärnen.
    Allerdings zeigt er mir dan nur eine leere Tabelle. Wieso ?
    Wie kann ich es hinbekommen einfach den Filter wieder raus zu nehmen so das wieder alle anderen Datensätze angezeigt werden ?

    Bitte um eure Hilfe ?(
    Hallo,

    danke für deine Hilfe :)

    Allerdings bekomme ich jetzt wenn ich auf den Button clicke die Fehlermeldung

    Der Ausdruck enthält den nicht unterstützten Operator '&'.

    Hier der geänderte Code
    Me.Table1BindingSource.Filter = "Artikelnummer= '%' & Me.TextBox1.Text & " '"

    Gruß
    Also ich versuche es mal besser zu erklären.

    Ich habe eine TextBox1 und möchte anhand dieser TextBox1 einen filter setzen. Also wenn ich in die TextBox1 die Artikelnummer schreibe und diese mit dem ok Button bestätige, so wird es auch gefiltert. Das funktioniert alles soweit.

    Wenn ich jetzt aber den Filter einfach wieder rausnehmen möchte, so lösche ich in der TextBox1 die Artikelnummer so das die TextBox1 wieder leer ist. Dann bestätige ich dies wieder mit dem Button und der Filter sol sich wieder abschalten. So das man alle in der Datagridview enthaltenen Daten wieder sichtbar sind.
    Nur das funktioniert leider nicht.
    Es erscheint immer nur eine Leere Datagridview.

    Es funktioniert nur wenn ich die Form Schließe und wieder öffne. Dann werden alle Daten angezeigt.
    ich habe jetzt zu letzt deinen Code ausprobiert.
    Diesen habe ich in den Button geschrieben.

    Dim filter = "'%'"
    If Not String.IsNullOrEmpty(Me.TextBox1.Text.Trim) Then filter = Me.TextBox1.Text
    Me.Table1BindingSource.Filter = String.Concat("Artikelnummer = ", filter)

    Der Code von mir vorher war folgender

    Me.Table1BindingSource.Filter = "Artikelnummer='" & Me.TextBox1.Text & "'"
    Welchen Datentyp hat die Spalte Artikelnummer?
    Falls kein String, dann musst Du die RemoveFilter-Methode (Danke @VB1963) nehmen. Bei meiner Version funktioniert es nur für String.

    VB.NET-Quellcode

    1. If String.IsNullOrEmpty(Me.TextBox1.Text.Trim) Then
    2. Me.Table1BindingSource.RemoveFilter()
    3. Else
    4. Me.Table1BindingSource.Filter = String.Concat("Artikelnummer = '", Me.TextBox1.Text, "'")
    5. End If
    ok ich poste es trotzdem obwohl bestimmt gleich wieder 20 flames kommen wegen schelchtem code etc.

    ich habe bei mir im Text_Changed folgenden Code drin, damit wird das DGV "direkt" gefiltert ohne Button.

    VB.NET-Quellcode

    1. Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    2. DtBindingSource.Filter = "Home Like '%" & TextBox1.Text & "%'"
    3. End Sub


    Home ist natürlich der ColumnHeader der DGV Spalte.