DataGridView filtern

  • VB.NET

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

    DataGridView filtern

    Hallo zusammen,

    ich habe schon ein wenig recherchiert, aber bin immer noch ein wenig hilflos.

    Ich habe mir eine vorhandene Access-DB, über ein vorhandenes gelinktes Element als DataGridView einbebaut.
    Jetzt möchte ich gerne einen Button einbauen, der bei einem Klick nur Zeilen der Spalte "EINS" anzeigt in denen "TEST" vorkommt.

    Also wie einen Autofilter in Excel nur über einen Button. Ist dies irgendwie möglich (bestimmt), wenn ja wie ?

    Danke im Voraus
    Benjamin
    leider hat mir das nicht sehr weit gebracht, da ich dies nicht auf mein Problem ableiten konnte...

    Habe dies jetzt so geschrieben:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. If TestDataGridView.Rows(1).Cells(0).Value = "TEST" Then
    3. Me.TestDataGridView.Rows(1).Visible = False
    4. End If
    5. If TestDataGridView.Rows(2).Cells(0).Value = "TEST" Then
    6. Me.TestDataGridView.Rows(2).Visible = False
    7. End If
    8. ... bis
    9. If TestDataGridView.Rows(maxAnzahlReihen).Cells(0).Value = "TEST" Then
    10. Me.TestDataGridView.Rows(maxAnzahlReihen).Visible = False
    11. End If
    12. End Sub


    Leider funktioniert das bei der Reihe 0 (rows(0)) nicht. Hier kommt folgender Fehler:

    HTML-Quellcode

    1. Die mit der Position des Währungs-Managers verknüpfte Zeile kann nicht unsichtbar gemacht werden.


    Zudem möchte ich es gerne in eine For-Schleife bauen, die bis zur maximalen Anzahl der Reihen im DGV durchläuft...

    Kann mir da einer einen Tipp geben ?
    1. benji2010 schrieb:

      da ich dies nicht auf mein Problem ableiten konnte...
      warum kannstedas nicht anwenden? Du scheinst doch eine BindingSource und eine DataTable zu haben, oder irre ich mich?
      Da kann man dann BindingSource.Filter setzen, zB.

      VB.NET-Quellcode

      1. bs.Filter = "EINS ='Test'"
      , und fertig.

    2. Der von dir beschriebene Fehler kommt, weil du die selektierte Zeile zu verbergen suchst. "WährungsManager" ist die MS-SpezialÜbersetzung von "CurrencyManager", einer Klasse, die Bindings managt.
    Die Rows sind, wie alles in .NET, nullbasiert. Also -1

    VB.NET-Quellcode

    1. If TestDataGridView.Rows(maxAnzahlReihen).Cells(0).Value = "TEST" Then
    2. Me.TestDataGridView.Rows(maxAnzahlReihen - 1).Visible = False
    3. End If
    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!