List(of DataRow) nicht serialisierbar - obwohl soll es ja gar nicht

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    List(of DataRow) nicht serialisierbar - obwohl soll es ja gar nicht

    Ich habe ein typisierten Dataset.

    Nun habe ich eine Klasse erstellt, in welchem mehrere Propertys Rows des Dataset sind. Von einer Row habe ich eine Property als List(of dieseDataRow).
    Eine Weile hat sich auch keiner beschwert, nur plötzlich der Designer an das diese DataRow nicht serialisierbar sei. Grundsätzlich soll dieses Objekt gar nicht gespeichert werden (das verstehe ich oberflächlich gesprochen darunter).

    VB.NET-Quellcode

    1. Dataset Kontakte
    2. DataTable Gruppe
    3. ID as Int32 as PrimaryKey
    4. Gruppe as String
    5. Klasse:
    6. Property GruppenRow as Kontakte.GruppeRow
    7. Property lstGruppe as List(of Kontakte.GruppeRow)
    8. Property Gruppe as String (= Readonly)
    9. Get
    10. Return If (GruppeRow.NotNull, GruppeRow.Gruppe,String.Empty)
    11. End Get
    12. Property lstGruppe as List (of String)


    (alles gerafft)


    Das ist die Fehlermeldung:



    oder auch diese




    die Property lstGruppe wird in den Datenquellen als nicht auswählbar gekennzeichnet und sich darüber auch immer beschwert.

    Ist es nicht möglich eine Property als List(of) und vorallem List(of DataRow) zu verwenden? Wie kann man das stattdessen machen? Welche Alternativen gibt es noch?

    Visual Studio verweigert sämtliche Zusammenarbeit - weder speichern noch irgendwas anderes.
    Klappt es denn ohne den neuen Code?
    Ich vermute nämlich fast, dass das wieder ein Knoten in der automatischen Codegenerierung ist. Den Spaß hatte ich auch schon häufiger mit nem DataSet. Testweise mal Die DatSet.Designer.vb löschen, Projekt bereinigen, Visual Studio schließen und neu starten, im DataSet.Designer eine DataTable verschieben, damit die DataSet.Designer.vb neu erstellt wird und dann nochmal kompilieren.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    hat imo weniger mittm Dataset zu tun als mit dem UserControl.
    Wenn ein UserControl selbstgebastelte Properties hat, dann will der Designer diese auch als Property ins PropertyGrid bringen.
    Und dazu musser sie serialisieren können.
    Lösung: Attributiere diese Properties mit <Browsable(False)>.

    (Also iwas in die richtung war das - is schon lange her)
    Guten Morgen,

    ich danke Euch schon mal für Eure Vorschläge.

    Also ohne den beiden Propertys funktionierte alles. Da ich mir auch nicht vorstellen konnte, dass ich in den Dataset-Klassen rumschmieren müsse und er eben immer nur auf den beiden List(of...)-Propertys rumhackte suchte ich dann mal nach Propertys mit ​List(of...).

    Herausgekommen ist, dass der Designer ein Problem hat, diese zu initialisieren um zur Designzeit die Daten füllen zu können.
    Als erstes bin ich auf diesen Beitrag gestossen und dann in Folge auch auf diesen Beitrag.

    Ich habe nun wie im ersten Beitrag eine private Variable erstellt und gebe diese in der Property zurück. Diese Propertys habe ich mit
    ​<Browsable(False)> und <DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> gekennzeichnet und damit funktioniert das alles wieder.

    So eine kleine Ursache mit so einer riesen Wirkung. Das muss man als Anfänger erst mal erahnen. Glaube, wegen so einem Problem habe ich schon drei mal von vorn angefangen...
    DesignerSerializationVisibility.Visible
    ist aber doch offensichtlich genau das falsche.
    Wenns trotzdem funktioniert, deutets daraufhin, dass <DesignerSerializationVisibility> in diesem Falle ganz weggelassen werden kann.

    Jo, und Steuerelemente-Entwicklung ist ein äusserst anspruchsvolles Spezialgebiet. Weil man muss immer mit-berücksichtigen, was der Designer mit den Sachen anstellt.