Datagridview filtern rowfilter

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

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von MemoAnMichSelbst.

    Datagridview filtern rowfilter

    Hey Community,

    habe ein Datagridview gefüllt aus einer SQL Datenbank. Dann eine View draufgesetzt, damit ich die Daten filtern kann mit der rowfilter-Methode.

    Will also ein Datagridview mit zwei Comboboxen filtern können.

    VB.NET-Quellcode

    1. Private Sub filternAuswertung(sender As System.Object, e As System.EventArgs) Handles aus_indi.SelectedIndexChanged, ausw_land.SelectedIndexChanged
    2. Dim bundesland As Integer
    3. Dim indikation As Integer
    4. If ausw_land.SelectedIndex > 0 Or aus_indi.SelectedIndex > 0 Then
    5. bundesland = ausw_land.SelectedValue
    6. indikation = aus_indi.SelectedValue
    7. dvauswertung.RowFilter = "indikatoren_id = " & indikation & " AND bundesland_id = " & bundesland & ""
    8. End If
    9. End Sub


    Nun hab ich folgendes Problem: Wenn ich ein Wert in einer Combobox ausgewählt hab. Dann ist in der anderen Combobox erstmal nichts und schreibt in die Variable "0". Und somit zeigt er mir keine Datensätze an, weil das z.b bundesland = 3 und indikation = 0 hat.

    Hoffe habe es verständlich erklärt :)

    Hier noch der Code mit dem die Tabelle gefüllt wird:

    VB.NET-Quellcode

    1. Private Sub tabelleAuswertungFuellen()
    2. Dim con As New MySqlConnection
    3. Dim cmd As New MySqlCommand
    4. Dim adapter As MySqlDataAdapter
    5. cmd.CommandText = "Select * From kliniken Inner Join klinik_info ON kliniken.id = klinik_info.klinik_id " & _
    6. " Inner Join bundesland ON kliniken.bundesland_id = bundesland.id Inner Join klinik_indikatoren " & _
    7. " ON kliniken.id = klinik_indikatoren.klinik_id "
    8. Try
    9. con.Open()
    10. adapter = New MySqlDataAdapter(cmd.CommandText, con)
    11. tableauswertung = New Data.DataTable
    12. adapter.Fill(tableauswertung)
    13. dvauswertung = New DataView(tableauswertung)
    14. dgv_auswertung.DataSource = dvauswertung
    15. con.Close()
    16. Catch ex As Exception
    17. MessageBox.Show(ex.Message)
    18. End Try
    19. End Sub
    Funktioniert leider auch nicht. Hätte es gerne, dass nach jeder Comboboxauswahl direkt das Datagridview gefiltert wird.

    Im rowfilter steht z.B "indikatoren_id = 3 AND bundesland_id = 0"

    Und damit gibt er mir ja logischerweise keine Datensätze zurück. Bestimmt ist die Lösung wieder ganz einfach :D

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Kevin12345“ ()

    nach jeder Comboboxauswahl funktioniert ja, allerdings immer nur mit dem Wert, der gerade in BEIDEN Comboboxen steht...

    ansonsten kannst du aber auch das auf zwei events aufteilen, eines für jede Combobox
    "Hier könnte Ihre Werbung stehen..."
    Ich verstehe ehrlich gesagt nicht wo das Problem denn nun liegt, bzw. was deiner Meinung nach anders passieren sollte.
    Wenn die gesetzten Filter nicht passen, dann zeigt er nichts an. Ist ja soweit auch richtig...
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Wenn ich einen Filter auswähle, sollte er mir die Tabelle nachdem einen Filter filtern. Das macht er nur leider nicht, weil dann der zweite Parameter automatisch gleich 0 ist. Durch die "AND" Verknüpfung sucht er halt nach den zwei Parametern.
    Also z.B Indikation = 3 und Bundesland = 0 Nur es gibt kein Bundesland mit der ID = 0. Deshalb zeigt er mir auch nichts an. Der zweite Parameter müsste halt irgendwie verschwinden ?(

    Wenn ich jetzt aus beiden Comboboxen etwas auswähle zeigt er mir alles wunderbar an.
    Na, dann prüf halt vor dem Füllen des RowFilters ob einer gesetzt wurde, keiner oder beide.
    Und bau dann entsprechend den Filter zusammen oO
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Habs hinbekommen wirklich easy :D. Manchmal sieht man den Wald vor lauter Bäumen nicht mehr...

    VB.NET-Quellcode

    1. If ausw_land.SelectedIndex > 0 Or aus_indi.SelectedIndex > 0 Then
    2. bundesland = ausw_land.SelectedValue
    3. indikation = aus_indi.SelectedValue
    4. If aus_indi.SelectedIndex >= 0 Then
    5. indikation = "indikatoren_id = " & indikation & ""
    6. End If
    7. If ausw_land.SelectedIndex >= 0 Then
    8. bundesland = " AND bundesland_id = " & bundesland & ""
    9. End If
    10. filter = indikation & bundesland
    11. dvauswertung.RowFilter = filter
    12. End If​
    Sollte auf die Nase fallen, wenn du nur den zweiten setzt.

    ich hab mal auf ne Form (Form1) vier Comboboxen (Combobox1 bis Combobox4) und nem Label (Label1) geworfen...

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim lstCombo As New List(Of ComboBox)
    3. Private Sub ComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged,
    4. ComboBox2.SelectedIndexChanged,
    5. ComboBox3.SelectedIndexChanged,
    6. ComboBox4.SelectedIndexChanged
    7. Dim result As String = ""
    8. For Each cb In lstCombo
    9. If cb.SelectedIndex >= 0 Then
    10. If Not result.Equals("") Then
    11. result &= " AND "
    12. End If
    13. result &= cb.Name & " = " & cb.Text
    14. End If
    15. Next
    16. Label1.Text = result
    17. End Sub
    18. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    19. lstCombo.AddRange({ComboBox1, ComboBox2, ComboBox3, ComboBox4})
    20. End Sub
    21. End Class


    GROB!!!
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MemoAnMichSelbst“ ()