Moin zusammen.
Ich bastel' grad ne ListView zusammen, das Befüllen an sich klappt einwandfrei.
Jetzt möchte ich noch die Möglichkeit hinzufügen, komplette Rows zu gruppieren und da hängt's.
Im Konkreten soll hier nach Abteilung gruppiert werden. Ist die Gruppe bereits vorhanden (Also die Abteilung mit dem Namen ist schonmal vorgekommen),
dazu gibts die
dann sollen die Rows der bereits bestehenden Gruppe hinzugefügt werden, ansonsten eine neue erstellen und die darein packen.
Mit dem folgenden Code erhält jede Zeile ihre eigene Gruppe (logisch, denn Zeile 17 sagt ja "füg' die Gruppe dem LV hinzu", obwohl die ggf. schon existiert)
Wo hab' ich denn hier den Denkfehler? Nehme ich Zeile 18 statt 17 zeigt garnix an und meckert schon über Zeile 22, dass das Item nur einmal zugefügt werden kann
Spoiler anzeigen
Ich bastel' grad ne ListView zusammen, das Befüllen an sich klappt einwandfrei.
Jetzt möchte ich noch die Möglichkeit hinzufügen, komplette Rows zu gruppieren und da hängt's.
Im Konkreten soll hier nach Abteilung gruppiert werden. Ist die Gruppe bereits vorhanden (Also die Abteilung mit dem Namen ist schonmal vorgekommen),
dazu gibts die
grpExist
-Funktion,dann sollen die Rows der bereits bestehenden Gruppe hinzugefügt werden, ansonsten eine neue erstellen und die darein packen.
Mit dem folgenden Code erhält jede Zeile ihre eigene Gruppe (logisch, denn Zeile 17 sagt ja "füg' die Gruppe dem LV hinzu", obwohl die ggf. schon existiert)
Wo hab' ich denn hier den Denkfehler? Nehme ich Zeile 18 statt 17 zeigt garnix an und meckert schon über Zeile 22, dass das Item nur einmal zugefügt werden kann
VB.NET-Quellcode
- Private Function grpExist(group As ListViewGroup) As Boolean
- Dim exist = False
- For Each grp As ListViewGroup In lvMitarbeiter.Groups
- If grp.Name = group.Name Then
- exist = True
- End If
- Next
- Return exist
- End Function
- Private Sub PlanDatenMitarbeiter(rwMitarbeiter As MitarbeiterRow)
- lvMitarbeiter.ShowGroups = True
- Dim grp As New ListViewGroup
- grp.Header = rwMitarbeiter.Abteilung
- grp.Name = rwMitarbeiter.Abteilung
- With lvMitarbeiter.Groups
- .Add(grp) ' -> macht logischerweise jede Zeile in eine eigene Gruppe
- 'If Not grpExist(grp) = True Then .Add(grp) -> geht nicht
- Dim lvItem As New ListViewItem
- lvItem = lvMitarbeiter.Items.Add(rwMitarbeiter.expFullname)
- lvItem.Group = grp
- lvItem.SubItems.Add(rwMitarbeiter.expGesellschaft)
- lvItem.SubItems.Add(rwMitarbeiter.Standort)
- lvItem.SubItems.Add(rwMitarbeiter.Abteilung)
- lvItem.SubItems.Add(rwMitarbeiter.Urlaubsanspruch.ToString)
- Dim anzahlUrlaub As Double = 0
- For Each rwPlan In dts.Plan
- If rwPlan.MitarbeiterID = rwMitarbeiter.ID Then
- If rwPlan.Datum.Year.ToString = My.Settings.TabbedJahr Then
- If rwPlan.Status = "U" Then
- anzahlUrlaub += 1
- ElseIf rwPlan.Status = "hU" Then
- anzahlUrlaub += 0.5
- End If
- End If
- End If
- Next
- lvItem.SubItems.Add(anzahlUrlaub.ToString)
- Dim unverplant As Double = rwMitarbeiter.Urlaubsanspruch - anzahlUrlaub
- lvItem.UseItemStyleForSubItems = False
- If unverplant < 0 Then
- lvItem.SubItems.Add(unverplant.ToString).BackColor = Color.LightCoral
- Else
- lvItem.SubItems.Add(unverplant.ToString)
- End If
- Dim anzahlKrank As Double = 0
- For Each rwPlan In dts.Plan
- If rwPlan.MitarbeiterID = rwMitarbeiter.ID Then
- If rwPlan.Datum.Year.ToString = My.Settings.TabbedJahr Then
- If rwPlan.Status Like "K" Then
- anzahlKrank += 1
- End If
- End If
- End If
- Next
- If anzahlKrank > 10 Then
- lvItem.SubItems.Add(anzahlKrank.ToString).BackColor = Color.LightCoral
- Else
- lvItem.SubItems.Add(anzahlKrank.ToString)
- End If
- End With
- End Sub
"Na, wie ist das Wetter bei dir?"
"Caps Lock."
"Hä?"
"Shift ohne Ende!"
"Caps Lock."
"Hä?"
"Shift ohne Ende!"
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „tragl“ ()