Datagridview mit Button für Autofilter (ähnlich Excel) möglich?

  • VB.NET
  • .NET 5–6

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Datagridview mit Button für Autofilter (ähnlich Excel) möglich?

    Hallo Zusammen,

    ich schaue jetzt schon seit ein paar Tagen hier durchs Forum und bei google.
    Bisher habe ich nur wenig brauchbares gefunden.

    Ich habe mir im Visual Studio ein VB.Net6 Projekt angelgt.
    Dort drin ist ein DataGridview, welches Daten aus einer MariaDB holt.

    Alles klappt bestens, aber:

    Ich würde gern im DatagridView Filtern können.
    Möglichkeiten gibt es da genug, aber die bekannteste und vermutlich auch sinnvollteste Darstellung ist die, wie es im Exel/LibreOffice mit dem Autofilter funktioniert.

    Leider findet sich nur wenig dazu, wie es funktonieren könnte, außer einem Projekt, welches man bei Microsoft runter laden kann, aber aus Gründen im Visual Studio nicht geladen werden kann.

    Ich hätte nicht gedacht, dass es sich als so schwer herraussstellt überhaupt was brauchbares zu finden.
    Insgeheim war ich davon ausgegangen, dass es eine Art "Standart-Einstellung" ist.

    Es wundert mich, dass es keine guten Beispiele und Tutorials zu dem Thema gibt.
    Für diesen Fall verwende ich das Advanced DataGridView. (Gibt es auch als NuGet)

    Hier noch die deutsche Übersetzung:
    lang_de-DE.json

    JSON-Quellcode

    1. {
    2. "ADGVSortDateTimeASC": "Älteste bis Neueste sortieren",
    3. "ADGVSortDateTimeDESC": "Neueste nach Älteste sortieren",
    4. "ADGVSortBoolASC": "Sortieren nach Falsch/Wahr",
    5. "ADGVSortBoolDESC": "Sortieren nach Wahr/Falsch",
    6. "ADGVSortNumASC": "Sortieren von Kleinste zu Größte",
    7. "ADGVSortNumDESC": "Sortieren von Größte zu Kleinste",
    8. "ADGVSortTextASC": "Von А nach Z sortieren",
    9. "ADGVSortTextDESC": "Von Z nach A sortieren",
    10. "ADGVAddCustomFilter": "Hinzufügen eines benutzerdefinierten Filters",
    11. "ADGVCustomFilter": "Benutzerdefinierter Filter",
    12. "ADGVClearFilter": "Filter löschen",
    13. "ADGVClearSort": "Sortierung löschen",
    14. "ADGVButtonFilter": "Filter",
    15. "ADGVButtonUndofilter": "Abbrechen",
    16. "ADGVNodeSelectAll": "(Alle auswählen)",
    17. "ADGVNodeSelectEmpty": "(Leere auswählen)",
    18. "ADGVNodeSelectTrue": "Wahr",
    19. "ADGVNodeSelectFalse": "Falsch",
    20. "ADGVFilterChecklistDisable": "Filterliste ist deaktiviert",
    21. "ADGVEquals": "gleich",
    22. "ADGVDoesNotEqual": "ist nicht gleich",
    23. "ADGVEarlierThan": "früher als",
    24. "ADGVEarlierThanOrEqualTo": "vor oder gleich",
    25. "ADGVLaterThan": "später als",
    26. "ADGVLaterThanOrEqualTo": "später oder gleich",
    27. "ADGVBetween": "zwischen",
    28. "ADGVGreaterThan": "größer als",
    29. "ADGVGreaterThanOrEqualTo": "größer oder gleich",
    30. "ADGVLessThan": "kleiner als",
    31. "ADGVLessThanOrEqualTo": "kleiner oder gleich",
    32. "ADGVBeginsWith": "beginnt mit",
    33. "ADGVDoesNotBeginWith": "beginnt nicht mit",
    34. "ADGVEndsWith": "endet mit",
    35. "ADGVDoesNotEndWith": "endet nicht mit",
    36. "ADGVContains": "enthält",
    37. "ADGVDoesNotContain": "enthält nicht",
    38. "ADGVInvalidValue": "Ungültiger Wert",
    39. "ADGVFilterStringDescription": "Zeilen anzeigen, deren Wert {0} \"{1}\"",
    40. "ADGVFormTitle": "Benutzerdefinierter Filter",
    41. "ADGVLabelColumnNameText": "Zeilen mit Wert anzeigen",
    42. "ADGVLabelAnd": "Und",
    43. "ADGVButtonOk": "OK",
    44. "ADGVButtonCancel": "Abbrechen",
    45. "ADGVSTBLabelSearch": "Suche:",
    46. "ADGVSTBButtonFromBegin": "Von Anfang",
    47. "ADGVSTBButtonCaseSensitiveToolTip": "Gross-/Kleinschreibung beachten",
    48. "ADGVSTBButtonSearchToolTip": "Weitersuchen",
    49. "ADGVSTBButtonCloseToolTip": "Ausblenden",
    50. "ADGVSTBButtonWholeWordToolTip": "Nur ganzes Wort suchen",
    51. "ADGVSTBComboBoxColumnsAll": "(Alle Spalten)",
    52. "ADGVSTBTextBoxSearchToolTip": "Wert für die Suche"
    53. }
    @Sisco86 Ich nutz da was namens DataGridViewAutoFilter - gab's mal bei MS zum Download.
    Funzt aber nicht immer so geil und man muss alle zu filternden Spalten einstellen.

    @HenryV: Werden denn grundsätzlich alle Spalten zum Filtern angeboten? Und wie sieht es mit Lizenzierung aus?
    Kann man das "einfach so einbauen"? Ich blick' da nie durch ;)
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    Danke erstmal für den Ansatz @HenryV, aber die Fragen von @tragl sind auch Berechtigt.

    Was mich Massiv wundert, ist das diese Funktion in MS Office sowie Libreoffice gefühlt ewig vorhanden ist und es keine "Standart" funktionen dazu gibt.

    Irgendwie muss es doch zu realisierne sein, ohne Kopfstände zu machen.
    Ist es nicht so das man das Filtern nicht im DataGridView macht sondern schon vorher die Daten fertig aufbereitet, also schon in der Source filtert?
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.

    Akanel schrieb:

    also schon in der Source filtert?

    ist richtig und zumindest macht DataGridViewAutofilter genau das. In meinem Programm ist's so, dass der Benutzer sich gerne Daten filtern will und das in fast jedem DataGridView - ist halt schöner,
    das im Grid direkt zu machen anstatt das über irgendwelche anderen Controls zu lösen ;)
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    Sisco86 schrieb:

    Was mich Massiv wundert, ist das diese Funktion in MS Office sowie Libreoffice gefühlt ewig vorhanden ist und es keine "Standart" funktionen dazu gibt.
    Tja - da unterschätzt du etwas: Was einfach aussieht, kann trotzdem auch irrsinnig kompliziert sein.
    Oft ist es tatsächlich unmöglich, eine allgemeingültige Lösung zu finden.
    Ein DGV kann ja auch Bilder anzeigen - ja wie wollte man denn eine Filterung einbauen auf einer Tabellenspalte, die Bilder anzeigt?
    Deswegen denkich, hält sich MS da schön zurück, sein DGV mit diesem Feature auszustatten - weil dann müsste es wirklich allgemeingültig gelöst sein, und 100% bulletproof.

    Ausserdem gibt viele Konzepte, wie gefiltert werden soll (wenn es denn möglich ist).
    Sehr beliebt ist, auf Anfangsbuchstaben zu filtern. Man kann aber auch filtern darauf, ob der Pattern irgendwo auftritt - nicht nur am Anfang. Bei Zahlen kann man auf Zahlenbereiche filtern. Bei Text-Filterung kann man auch mit Wildcards arbeiten. Oder man mutet dem Benutzer gar zu, Regex zu beherrschen - eine enorm mächtige Art zu filtern.
    Usw...