Datagridview mit verknüpften Tabellen Filtern

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

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

    Datagridview mit verknüpften Tabellen Filtern

    Hallo,

    ich habe meiner Anwendung aktuell ca. 15 verschiedene Formulare mit Stammdaten. Diese sind alle weitestgehend ähnlich aufgebaut und enthalten unter anderem ein gebundenes Datagridview in eine Textbox in der man Suchbegriffe eingeben kann.
    Zur Vereinfachung habe ich die Suchfunktion in ein Modul ausgelagert:

    Quellcode

    1. Public Function fncFilterString(strSuchtext As String, dtQuelldaten As DataTable) As String
    2. Dim strSuchString As String = ""
    3. For Each col As DataColumn In dtQuelldaten.Columns
    4. If strSuchString <> "" Then strSuchString = strSuchString & " OR "
    5. strSuchString = strSuchString & "Convert(" & col.ColumnName & ", 'System.String') Like '*" & strSuchtext & "*'"
    6. Next
    7. Return strSuchString
    8. End Function


    Ich übergebe also aus jedem Formular die betreffende Tabelle und den Suchtext und bilde mir einen Suchstring, der alle Spalten der Tabelle nach dem Begriff durchsucht. Diesen gebe ich an das Formular zurück und Filter die jeweilige Bindingsource. Das funktioniert soweit auch alles.
    Nun enthalten allerdings manche Stammdaten Verweise auf andere Stammdaten. Als übliches Beispiel nehme ich hier mal eine Produkttabelle, welche den Verweis auf die Produktkategorie enthält, also IDProdukt, IDProduktkategorie, Produktname. Im Datagridview habe ich die Spalte IDProduktkategorie in eine Combobox umgewandelt und lasse mir die entsprechenden Werte aus der zugehörigen Produktkategorietabelle anzeigen. Logischerweise funktioniert der Filter natürlich nicht auf die Inhalte der verknüpften Tabellen.

    Nun könnte ich mir natürlich helfen und das Datagridview selber durchsuchen (Zeilen- und Spaltenweise, Suchbegriff mit FormattedValue vergleichen und die ID aus der ersten Spalte letztendlich als Suchstring zurückgeben). Das klappt auch, finde ich aber erstmal nicht unbedingt elegant. Gibt es hier eine andere Möglichkeit, die Suchfunktion für verschiedene Formulare weiterhin "zentral" zu halten und auch die verknüpften Tabellen aus den Comboboxen innerhalb des Datagridviews zu durchsuchen?

    Gruß, AndPod