[Windows-Forms] Listview gruppieren per SUB funktioniert nicht

  • VB.NET

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

    [Windows-Forms] Listview gruppieren per SUB funktioniert nicht

    Liebe Community,

    dies ist mein erster Beitrag hier und ich hoffe ich werde nicht gelyncht, weil ich den Beitrag ggf. im falschen Forum eröffnet habe, oder die Suche "nicht richtig" genutzt habe. Tatsächlich verzweifle ich an dem folgenden Problem schon seit ein paar Tagen und habe bereits unterschiedliche Wege versucht.

    Jedenfalls habe ich in einem Modul folgende Sub:

    VB.NET-Quellcode

    1. Public Sub Datenbestand_laden(selString As String, Optional grouped As Int32 = 0)
    2. Dim RowCount As Int32
    3. RowCount = 0
    4. ' Gruppen erstellen -- START
    5. If grouped = 0 Then
    6. cmd.CommandText = "SELECT DISTINCT inv_Kategorie FROM tblInventar ORDER BY inv_Kategorie ASC;"
    7. con.Open()
    8. reader = cmd.ExecuteReader()
    9. Dim i As Int32 = 0
    10. Do While reader.Read()
    11. frmMain.lv_Items.Groups.Add(i, reader("inv_Kategorie"))
    12. i += 1
    13. Loop
    14. con.Close()
    15. End If
    16. ' Gruppen erstellen -- ENDE
    17. cmd.CommandText = selString
    18. Try
    19. con.Open()
    20. reader = cmd.ExecuteReader
    21. Do While reader.Read
    22. RowCount += 1
    23. Loop
    24. reader.Close()
    25. If RowCount > 0 Then
    26. frmMain.lv_Items.Items.Clear()
    27. frmMain.lblItemCount.Text = "0"
    28. frmFortschritt.ProgressBar1.Maximum = RowCount
    29. frmFortschritt.ProgressBar1.Value = 0
    30. frmMain.Show()
    31. frmMain.lv_Items.Visible = False
    32. frmFortschritt.Show()
    33. reader = cmd.ExecuteReader
    34. Do While reader.Read
    35. With frmMain.lv_Items.Items.Add(New ListViewItem(reader("inv_ID").ToString, frmMain.lv_Items.Groups(0)))
    36. .SubItems.Add(reader("inv_Standort"))
    37. .SubItems.Add(reader("inv_APNR"))
    38. .SubItems.Add(reader("inv_SNR"))
    39. .SubItems.Add(reader("inv_Kategorie"))
    40. .SubItems.Add(reader("inv_Anwender"))
    41. .SubItems.Add(reader("inv_RNR"))
    42. .SubItems.Add(reader("inv_TNR"))
    43. .SubItems.Add(reader("inv_Bemerkung"))
    44. .SubItems.Add(reader("inv_Stand"))
    45. End With
    46. 'MsgBox(frmMain.lv_Items.Items(0).Group.Header)
    47. frmFortschritt.ProgressBar1.Value += 1
    48. 'Application.DoEvents()
    49. If frmFortschritt.ProgressBar1.Value = RowCount Then
    50. frmFortschritt.Close()
    51. End If
    52. frmMain.lblItemCount.Text += 1
    53. Loop
    54. frmMain.lv_Items.Visible = True
    55. For i = 0 To frmMain.lv_Items.Items.Count - 1
    56. If i Mod 2 = 0 Then : frmMain.lv_Items.Items.Item(i).BackColor = Color.LightBlue
    57. Else : frmMain.lv_Items.Items.Item(i).BackColor = Color.White
    58. End If
    59. Next
    60. reader.Close()
    61. Else
    62. MsgBox("Keine Datensätze gefunden",, "Suche")
    63. End If
    64. con.Close()
    65. Catch ex As Exception
    66. MessageBox.Show(ex.Message)
    67. End Try
    68. End Sub


    Ob das an sich jetzt Alles so sauber ist, darüber liese sich sicherlich streiten. Ich taste mich da auch erst ran. :D

    Mein Problem ist, dass der obige Code es nicht hinbekommt die eingelesenen Einträge zu gruppieren. Merkwürdig dabei ist aber, dass die gewünschten Gruppen in der Listview angelegt werden und auch die Zuordnung zu den Items klappt. - Dies habe ich per Ausgabe in eine MsgBox überprüft. Aber die Gruppen und darau resultierende Darstellung funktioniert nicht. Auch wenn ich innerhalb der Sub fest ein Item hinterlege.. es wird nicht gruppiert dargestellt.

    Wenn ich über den Formulareditor von Visual Studio manuell statische Gruppen in die Listview einfüge und auch statisch Items hinterlege werden Gruppen angezeigt. :/

    Hat hier vllt. irgendjemand einen Tipp, was ich übersehe bzw. ja an der Stelle falsch mache? Wenn ich Infos vergessen habe, natürlich nachfragen.

    Ich danke Euch bereits vielmals.

    BG

    Sascha

    *Verschoben - Der Titel sagt mir das dir bewusst ist das dies nicht ins WPF Forum gehört, bitte das nächste mal darauf achten. Danke* ~NoFear23m

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Nofear23m“ ()

    Okay. Also nach mehrmaligem Überlegen und prüfen habe ich die Lösung des Problems nun selbst finden können. Ich danke aber jeden, der ggf. über den Code geschaut und vllt. versucht hat für mich eine Lösung zu finden.

    Die Lösung fand sich letztlich in den Projekteigenschaften. Wenn dort im Bereich "Anwendung", Abschnitt "Eigenschaften des Windows-Anwendungsframeworks" der Haken bei "Visuelle XP-Stile aktivieren" fehlt, dann funktioniert die Group-Funktion nicht.

    Sorry, sollte das als Anfängerfehler gelten, aber den habe ich dann an dieser Stelle halt gemacht. Nun funktioniert es jedenfalls und das ist ja das Wichtigste. :thumbsup:

    Schönen Abend für Euch.

    Beste Grüße
    Ja. die Suche hat etwas gedauert. Hatte das Projekt auch nur übernommen. Da es mir dann so merkwürdig erschien, hatte ich zum Test ein Projekt komplett neu angelegt und es getestet. Dort klappte es, somit musste ich auf die Suche nach Unterschieden gehen. Und der benannte Haken war dann der ausschlaggebende Unterschied. :S