Moin zusammen,
ich habe ein Problem mit meiner TreeView. Ich verwende die Methode .Sort() zum sortieren der TreeView. Das funktioniert genau einmal korrekt (beim Programmaufruf). Das Sortieren findet in einer Funktion statt und ich mache nichts anderes als die Funktion erneut aufzurufen. Danach stimmen jedoch die TreeView.Nodes.Name Attribute nicht mehr. Warum?
Ich komm nicht dahinter, warum es beim erstmaligen Sortieren funktioniert und bei darauf folgenden Sortiervorgängen nicht!
Ich könnte verstehen wenn es an dem Sortier-Algorithmus liegt. Warum dann aber nicht beim ersten mal?
Kurz noch eine Erläuterung was der nachfolgende Code tun soll.
Diese Funktion soll ein TreeView Von Mitarbeitern und Firmen zur Verfügung stellen:
Personalverwaltung
Firma
Mitarbeiter(A)
Mitarbeiter(B)
Mitarbeiter(C)
Firma
Mitarbeiter(A)
Mitarbeiter(B)
Mitarbeiter(C)
Wie gesagt, es funktioniert einmalig. Wenn ich die Funktion erneut aufrufe führe ich vorher ein TreeView.Clear() aus. Kann es sein, das die Nodes nicht wirklich gelöscht werden? Gibt es andere Möglichkeiten das TreeView "sauber" zu bekommen um es letztendlich neu befüllen zu können?
Kann vielleicht mal jemand drüber gucken? :-S Bitte achtet nicht auf die Namenswahl der Variablen
Vielen Dank an alle im Voraus!
Gruß,
Hendrik
ich habe ein Problem mit meiner TreeView. Ich verwende die Methode .Sort() zum sortieren der TreeView. Das funktioniert genau einmal korrekt (beim Programmaufruf). Das Sortieren findet in einer Funktion statt und ich mache nichts anderes als die Funktion erneut aufzurufen. Danach stimmen jedoch die TreeView.Nodes.Name Attribute nicht mehr. Warum?
Ich komm nicht dahinter, warum es beim erstmaligen Sortieren funktioniert und bei darauf folgenden Sortiervorgängen nicht!
Ich könnte verstehen wenn es an dem Sortier-Algorithmus liegt. Warum dann aber nicht beim ersten mal?
Kurz noch eine Erläuterung was der nachfolgende Code tun soll.
Diese Funktion soll ein TreeView Von Mitarbeitern und Firmen zur Verfügung stellen:
Personalverwaltung
Firma
Mitarbeiter(A)
Mitarbeiter(B)
Mitarbeiter(C)
Firma
Mitarbeiter(A)
Mitarbeiter(B)
Mitarbeiter(C)
Wie gesagt, es funktioniert einmalig. Wenn ich die Funktion erneut aufrufe führe ich vorher ein TreeView.Clear() aus. Kann es sein, das die Nodes nicht wirklich gelöscht werden? Gibt es andere Möglichkeiten das TreeView "sauber" zu bekommen um es letztendlich neu befüllen zu können?
Kann vielleicht mal jemand drüber gucken? :-S Bitte achtet nicht auf die Namenswahl der Variablen
VB.NET-Quellcode
- Public Function GetMitarbeiterTreeView(ByRef TreeView As TreeView, Optional ByRef StatusBar As ProgressBar = Nothing, Optional ByRef ToolStripProgressBar As ToolStripProgressBar = Nothing, Optional ByVal Inaktive As Boolean = False) As Boolean
- Dim UIDs As List(Of Integer) = GetUIDFromRohdaten(Inaktive)
- Dim Var As String = Nothing
- Dim Merker As Boolean = False
- Dim I As Integer = 0
- If StatusBar IsNot Nothing Then
- StatusBar.Maximum = UIDs.Count
- StatusBar.Value = 0
- ElseIf ToolStripProgressBar IsNot Nothing Then
- ToolStripProgressBar.Maximum = UIDs.Count
- ToolStripProgressBar.Value = 0
- End If
- For Each ResultUID In UIDs
- Dim MAXAzAcGUID = Aggregate Result In db.PAAzAc Where Result.Rohdaten.PAInternUID = ResultUID Into Max(Result.AzAcGUID)
- Dim Firma = From Result In db.PAAzAc _
- Where Result.AzAcGUID = MAXAzAcGUID _
- Select Result.AzAcFirm
- For Each Result In Firma
- Var = Result
- Next
- If TreeView.Nodes(0).Nodes.Count > 0 Then
- For Each Node In TreeView.Nodes(0).Nodes
- If Var = Node.text Then
- Merker = True
- End If
- Next
- If Merker = False Then
- TreeView.Nodes(0).Nodes.Add(Var)
- TreeView.Nodes(0).LastNode.Name = Var
- Else
- Merker = False
- End If
- Else
- TreeView.Nodes(0).Nodes.Add(Var)
- TreeView.Nodes(0).LastNode.Name = Var
- End If
- For Each Node In TreeView.Nodes(0).Nodes
- If Var = Node.text Then
- Dim Mitarbeiter = From Result In db.Rohdaten
- Where Result.PAInternUID = ResultUID
- Select Result.PANam & ", " & Result.PAVNam
- For Each MA In Mitarbeiter
- TreeView.Nodes(0).Nodes(I).Nodes.Add(MA)
- TreeView.Nodes(0).Nodes(I).LastNode.Name = ResultUID
- If IsMitarbeiterAktiv(ResultUID) = True Then
- TreeView.Nodes(0).Nodes(I).LastNode.ForeColor = Color.Green
- ElseIf IsMitarbeiterAktiv(ResultUID) = False Then
- TreeView.Nodes(0).Nodes(I).LastNode.ForeColor = Color.Red
- End If
- Next
- I = 0
- Exit For
- End If
- I = I + 1
- Next
- If StatusBar IsNot Nothing Then
- StatusBar.Value = StatusBar.Value + 1
- ElseIf ToolStripProgressBar IsNot Nothing Then
- ToolStripProgressBar.Value = ToolStripProgressBar.Value + 1
- End If
- Next
- 'TreeView.Nodes(0).TreeView.Sort()
- TreeView.Sort()
- Return True
- End Function
Vielen Dank an alle im Voraus!
Gruß,
Hendrik
Der Vorteil der Intelligenz besteht darin, sich dumm stellen zu können. Das Gegenteil davon ist schon schwieriger.