Mehrere DGVs aus einer Table mittels Filterung

  • VB.NET

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

    Mehrere DGVs aus einer Table mittels Filterung

    Hallo zusammen!
    Ich habe hier eine Table (tbl_Bebauung), die zig Produkte enthält, die in 6 Kategorien aufgeteilt sind.
    Dafür brauche ich 6 DGVs nebeneinander in einer Form, die mittels Filter nur die jeweilige Kategorie anzeigen, aber alle aus der gleichen Tabelle gefüllt werden.
    Bisher habe ich folgendes gebaut:

    VB.NET-Quellcode

    1. Dim Mgmt_Erzeugnisse As New BindingSource
    2. Mgmt_Erzeugnisse.DataSource = Tbl_BebauungTableAdapter.GetDataByAlleProdukte
    3. Mgmt_Erzeugnisse.Filter = "BebauungArt = 'erzeugnis' AND ID > 5"
    4. Mgmt_Erzeugnisse.Sort = "Name ASC"
    5. DGV_Mgmt_Bebauung_Erzeugnisse.DataSource = Mgmt_Erzeugnisse
    6. Dim Mgmt_Handwerk As New BindingSource
    7. Mgmt_Handwerk.DataSource = Tbl_BebauungTableAdapter.GetDataByAlleProdukte
    8. Mgmt_Handwerk.Filter = "BebauungArt = 'handwerk' AND ID > 5"
    9. Mgmt_Handwerk.Sort = "Name ASC"
    10. DGV_Mgmt_Bebauung_Handwerk.DataSource = Mgmt_Handwerk


    Wird mir auch richtig angezeigt, aber Änderungen darin werden nicht gespeichert.

    Versucht habe ich folgendes:

    VB.NET-Quellcode

    1. Me.Validate()
    2. Me.Tbl_BebauungBindingSource.EndEdit()
    3. Tbl_BebauungTableAdapter.Update(D02d2874DataSet.tbl_Bebauung)


    und auch alle DGVs einzeln:

    VB.NET-Quellcode

    1. Me.Validate()
    2. Dim DGVs() As DataGridView = {DGV_Mgmt_Bebauung_Erzeugnisse, DGV_Mgmt_Bebauung_Handwerk}
    3. For Each dgv In DGVs
    4. dgv.EndEdit()
    5. Next
    6. Tbl_BebauungTableAdapter.Update(D02d2874DataSet.tbl_Bebauung)




    Wenn ich versuche die Daten direkt über die Bindingsource zu holen, habe ich das Problem dass bei der Filterung der nächsten DGVs der erste Filter überschrieben wird und am Ende alle DGVs den gleichen Inhalt zeigen:

    VB.NET-Quellcode

    1. Mgmt_Neu.DataSource = Tbl_BebauungBindingSource
    2. Mgmt_Neu.Filter = "ID > 5"
    3. Mgmt_Neu.Sort = "Name ASC"
    4. DGV_Mgmt_Bebauung_neu.DataSource = Mgmt_Neu



    Wie kann ich es realisieren, dass ich jede DGV einzeln Filtern kann und trotzdem die Änderungen gespeichert werden???

    Danke und Grüße,
    Stefan
    Brauch' ich die?
    Ich seh jetzt auch (noch) kein Problem. Ich habe ne DataTable mit ner Kategorie-Column, 2 DGVs, die über je eine BindingSource an jene DataTable gekoppelt sind, DGV1 zeigt dank BS1-Filter nur Artikel der Kategorie 1 an, DGV2 dank BS2 nur Cat.2. Und wenn ich im DGV1 bei einem Artikel die Cat von 1 auf 2 ändere, wird der Artikel nicht mehr in DGV1 sondern in DGV2 angezeigt. Ohne Zusatzcode.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Wie Vb1963 denke ich auch, dass Problem ist, dass dieselben Daten mehrmals geladen wurden.
    Und die Lösung wäre eben, ein typisiertes Dataset zu verwenden, **eines*'*, welches (automatisch) nur **eine** Tbl_Bebauung enthält, die auch nur **einmal** befüllt wird.
    Wenn dann abgespeichert wird, weiss man, dass die richtige DataTable abgespeichert wird - weil es gibt nur eine.
    Abspeichern vorzugsweise einfach mit TableAdapterManager.UpdateAll - das speichert alle DataTables ab, die Änderungen enthalten.

    Aber gugge auch vier Views-Videos .
    Da wird gezeigt, wie man das ganze Gesummse mit die BindingSources besser im Form-Designer macht, anstatt händisch (fehleranfälligen) Code zu schreiben.