BindingSource Sortierungs Problem

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    BindingSource Sortierungs Problem

    Hallo Leute,

    ich bin fleißig am VB.Net lernen und stoße langsam auf meine ersten Probleme.

    Meine Übungsanwendung hierzu ist ein Tankbuch, das meinen Spritverbrauch kontrollieren soll.

    Hierzu habe ich erstmal eine Klasse "Tankvorgang" geschaffen, sie besitzt folgenden Aufbau.

    VB.NET-Quellcode

    1. <Serializable()> _
    2. Public Class Tankvorgang
    3. Dim _datum As Date
    4. Public Property Datum() As Date
    5. Get
    6. If _datum <> Nothing Then
    7. Return _datum
    8. Else
    9. Return Today.Date
    10. End If
    11. End Get
    12. Set(value As Date)
    13. If value <> Nothing Then
    14. _datum = value
    15. Else
    16. _datum = Today.Date
    17. End If
    18. End Set
    19. End Property
    20. Public Property Kilometer() As Double
    21. Public Property Sprit() As Double
    22. Dim _verbrauch As Double
    23. Public Property Verbrauch() As Double
    24. Get
    25. If _verbrauch <> Nothing Then
    26. Return Math.Round(_verbrauch, 2)
    27. ElseIf Me.Sprit <> Nothing And Me.Kilometer <> Nothing Then
    28. Return Math.Round((Me.Sprit / Me.Kilometer) * 100, 2)
    29. Else
    30. Return Nothing
    31. End If
    32. End Get
    33. Private Set(value As Double)
    34. _verbrauch = value
    35. End Set
    36. End Property
    37. Public Sub New(ByVal kilometer As Double, ByVal sprit As Double, Optional ByVal datum As Date = Nothing)
    38. Me.Kilometer = kilometer
    39. Me.Sprit = sprit
    40. Me.Verbrauch = (Me.Sprit / Me.Kilometer) * 100
    41. If datum <> Nothing Then
    42. Me.Datum = datum
    43. Else
    44. Me.Datum = Today.Date
    45. End If
    46. End Sub
    47. End Class


    In der MainForm wird hieraus eine Liste generiert:

    VB.NET-Quellcode

    1. Dim Tankvorgänge As New List(Of Tankvorgang)


    und das ganze über eine BindingSource an ein DataGridView übergeben:

    VB.NET-Quellcode

    1. BindingSource.DataSource = Tankvorgänge
    2. frmEinträge.DataGridViewTankvorgänge.DataSource = BindingSource


    Nun zu meinen eigentlichen Problem, dem sortieren der Daten. Wie muß ich die Klasse umbauen um sie mittels

    VB.NET-Quellcode

    1. BindingSource.Sort="Datum DESC"


    zu sortieren?

    An diesem Punkt komme ich einfach nicht weiter.

    Gruß
    Florian
    Hey,

    Die Datenquelle muss IBindingList oder IBindingListView implementieren, damit eine BindingSource dies unterstützt. Davon überzeugen kannst Du Dich, indem Du die Property .SupportsSorting der BindingSource abfragst. Hier kommt in Deinem Fall false zurück, da Deine List(Of ...) diese Schnittstellen nicht implementiert.

    Lösung: Bilde Deine Datenstruktur in einer DataTable, innerhalb eines DataSets ab. Leg als Datenquelle für die BindingSource dann diese DataTable fest. Hier hast Du dann volle Funktionalität.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o