Sortierbares DataGridView

  • VB.NET

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

    Sortierbares DataGridView

    Hallo,

    ich schreibe gerade an einem Programm, das aus bestehenden FE-Modellen für bestimmte Programme mittels API Schnittstelle Daten auslesen und Listen eigener Klassen schreiben soll.



    VB.NET-Quellcode

    1. Public Class Class_Node_Attributes
    2. #Region "Variables"
    3. Public Node_Number As Integer
    4. Public Node_ID As Integer
    5. Public Node_Coordinate_X As Double
    6. Public Node_Coordinate_Y As Double
    7. Public Node_Coordinate_Z As Double
    8. #End Region
    9. #Region "Properties"
    10. Public Property Number() As Integer
    11. Get
    12. Return Node_Number
    13. End Get
    14. Set(ByVal value As Integer)
    15. Node_Number = value
    16. End Set
    17. End Property
    18. '..........
    19. #End Region
    20. End Class



    Die globale Liste ist wie folgt definiert:

    VB.NET-Quellcode

    1. Public Selected_Nodes_List As List(Of Class_Node_Attributes)


    Die Daten stelle ich in einem DataGridView dar und nutze dabei die Properties als Headertext der einzelnen Spalten.

    VB.NET-Quellcode

    1. With dgv
    2. .DataSource = Nothing
    3. .Parent = myTP
    4. .Dock = DockStyle.Fill
    5. .Rows.Clear()
    6. .AutoGenerateColumns = True
    7. .DataSource = Selected_Nodes_List.ToList
    8. .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells
    9. .AutoResizeColumns()
    10. .ReadOnly = True
    11. End With


    Nun möchte ich das DGV beim Klick auf die Header sortieren können, dabei hat mir das Netz bisher folgendes verraten:

    1) Ich muss "Implements IBindingList" in meiner Klasse ergänzen, weil die Liste dies standardmäßig nicht unterstützt. Dabei wird vom Compiler automatisch Code in meiner Klasse ergänzt, aber das Programm hängt sich dann beim Ausführen auf. Muss ich den Code noch anpassen? Ich habe leider keine Beispiele im Netz gefunden die mir weitergeholfen haben, die anderen habe ich leider nicht verstanden. Zusätzlich werden dann in meinem DGV Spalten eingefügt, die ich nicht haben möchte; zwar kann man diese ausblenden, da ich aber ca. 10 solcher Klassen habe, gestaltet sich das automatische ausblenden als schwierig.
    2) Ich müsste meine List vorher in eine DataTable konvertieren (kann ich da eine Funktion innerhalb der Klasse schreiben, die das bewerkstelligt und dann in meinem Code mittels z.B. Selected_Nodes_List.ConverttoDataTable aufgerufen wird?). Dieses könnte ich dann an ein DataView binden, welches ich wiederum an das DGV binde.

    Ich möchte die Daten in dem DGV sortieren können (nur Zahl), eventuell einzelne Datensätze ausblenden können. Zusätzlich möchte ich das DGV nutzen um später Modell (über DirectX) zu zeichnen und Graphen zu erzeugen (z.B. Knotenverschiebungen für bestimmte Lastfälle). Welches wäre hier der beste Weg und könntet Ihr mir ein Minimalbeispiel aufzeigen?

    Vielen Dank schonmal im Voraus