Datagridview Spalte / Column als Datasource eine Klasseninstanz zuweisen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von hans im glück.

    Datagridview Spalte / Column als Datasource eine Klasseninstanz zuweisen

    Frage:
    Mein DGV ist an eine Tbl eines Typ DS gebunden.

    Ich habe eine KLasseninstanz mit Daten die nicht Bestandteil des Typ DS ist(hängt damit zusammen, dass die Werte nicht editierbar sein sollen und nicht in der XML gespeichert werden sollen).

    Ich habe es nicht hinbekommen, dass die SPalte - und nur diese - der Klasseninstanz zugewiesen wird.

    Wenn das wirklich nicht geht muss ich wohl eine Tabelle im Typ DS entsprechend dem KLassendesign gestalten und diese nach dem laden löschen und mit dem KLasseninhalten füllen? Dann könnte ich die Spalte nutzen wie ich will. Find ich aber umständlich.

    Habt ihr eine Idee?
    Gruß Hannes
    Ich verstehe ühaupt nicht, was du redest.
    Du hast eine KlassenInstanz mit Daten, die nicht BestandTeil des Typ DS sind? Fein, ich auch! Und meine Werte werden auch nicht in deiner Xml gespeichert - perfekt!

    Und nun hast du es nicht hinbekommen, "die" SPalte (äh - welche war das nochmal?) der KlassenInstanz zuzuweisen - ähm: Hat die KlassenInstanz denn eine Property vom Typ SPalte? Sonst ist ja klar, dass man ihr keine SPalte zuweisen kann.

    Also im Ernst: Versuch dein Prob nochmal in ieiner Weise nachvollziehbar zu beschreiben.
    ...dann will ich es gerne nochmal versuchen:

    mein dgv hat als datasource tblBewertung aus einem typ ds.
    die tblBewertung sieht wie folgt aus:
    ID
    Note
    FkGefBeurteilung
    FkMerkmal

    Die Note jedoch soll aus folgender Klasse gewählt werden können:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Class note
    2. Private _note As Integer
    3. Private _Zustand As String
    4. Private _Einwirkung As String
    5. Private _Zusammenfassung As String
    6. Sub New()
    7. End Sub
    8. Public Property Note() As Integer
    9. Get
    10. Return _note
    11. End Get
    12. Set(value As Integer)
    13. _note = value
    14. End Set
    15. End Property
    16. Public Property Bezeichnung() As String
    17. Get
    18. Return _Zustand
    19. End Get
    20. Set(value As String)
    21. _Zustand = value
    22. End Set
    23. End Property
    24. Public Property Einwirkung As String
    25. Get
    26. Return _Einwirkung
    27. End Get
    28. Set(value As String)
    29. _Einwirkung = value
    30. ZusammenfassungErzeugen()
    31. End Set
    32. End Property
    33. Public ReadOnly Property Zusammenfassung As String
    34. Get
    35. Return _Zusammenfassung
    36. End Get
    37. End Property
    38. Private Sub ZusammenfassungErzeugen()
    39. _Zusammenfassung = CStr(_note) & " | " & _Zustand & " | " & _Einwirkung
    40. End Sub
    41. End Class

    ...später in der Anwendung wird die Klasse gefüllt:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private _noten As New List(Of note)
    2. _noten.Add(New note With {.Note = 1, .Bezeichnung = "Spitzenniveau", .Einwirkung = "Keine"})
    3. _noten.Add(New note With {.Note = 2, .Bezeichnung = "sehr gut", .Einwirkung = "sehr niedrig"})
    4. _noten.Add(New note With {.Note = 3, .Bezeichnung = "gut", .Einwirkung = "niedrig"})
    5. _noten.Add(New note With {.Note = 4, .Bezeichnung = "normal", .Einwirkung = "normal"})
    6. _noten.Add(New note With {.Note = 5, .Bezeichnung = "beeinträchtigt", .Einwirkung = "erhöht"})
    7. _noten.Add(New note With {.Note = 6, .Bezeichnung = "schlecht", .Einwirkung = "hoch"})
    8. _noten.Add(New note With {.Note = 7, .Bezeichnung = "sehr schlecht", .Einwirkung = "sehr hoch"})


    ich brauche also in meinem dgv eine combo box die den inhalt der klasse darstellt! optimalerweise das feld zusammenfassung.

    ich hoffe das war jetzt deutlicher.
    Gruß Hannes
    ja, schon.

    Und du kannst nicht einfach codeseitig der ComboColumn diese DataSource zuweisen? Und DisplayMember setzen, ValueMember, und SelectedValue binden?

    Sowas ist zwar umständlich in Code, aber kein Ding der Unmöglichkeit.
    Am besten guck dir eine funktionierende designete ComboColumn im Designer-Code an.

    (Ich zwar nicht, warum du diese Klasse nicht mit ins Datenmodell hineinnehmen willst, aber seis drum)

    ErfinderDesRades schrieb:

    Ich zwar nicht, warum du diese Klasse nicht mit ins Datenmodell hineinnehmen willst, aber seis drum)


    ...ich denke das werde ich wohl tun. Wollte ausschließen, dass der User die Eigenschaften der Note ändern kann, aber letztendlich ist das sein Problem wenn er in der XML rumfummelt.
    Gruß Hannes