DataGridView Feld aus Array befüllen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von BiedermannS.

    DataGridView Feld aus Array befüllen

    Hallo alle zusammen,

    ich habe mir ein kleines Programm geschrieben, mit dem ich Daten über ein DataGridView bearbeiten kann. Das DataGridView wird über eine List(of T) befüllt.

    Das Laden und Speichern der Daten an sich ist auch nicht das Problem, das Problem ist das Laden bzw. Speichern von Arrays.

    Gibt es eine Möglichkeit, einem DataGridView mitzuteilen, wie es Arrays in ein Feld laden bzw. danach wieder speichern soll, ohne die eine komplette Routine für das Laden/Speichern zu schreiben?
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D
    Warum bildest Du Deine Datenstruktur nicht in einem DataSet ab? Eine zweite Tabelle im DataSet könnte beispielsweise Deine Daten repräsentieren, die Du im Moment in einem Array hast. Auch das Laden und Speichern nimmt Dir das DataSet ab. Einfacher geht es nicht.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @BiedermannS: Sieh Dir mal dies an:

    VB.NET-Quellcode

    1. Private myList As New List(Of IO.FileInfo)
    2. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    3. myList.AddRange(New IO.DirectoryInfo("c:\Temp").GetFiles("*.*", IO.SearchOption.AllDirectories))
    4. Me.DataGridView1.DataSource = myList
    5. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @SpaceyX:
    Weil ich mit Klassen in dem Fall die wenigste Arbeit habe. Die Daten werden sowohl in einer .NET Anwendung verwendet, als auch in VBA über COM. Und COM kann keine DataSets, Klassen allerdings schon.

    @RodFromGermany:
    Das ist nicht das Problem. Vielleicht habe ich mich falsch ausgedrückt.

    Also, ich habe eine Klasse mit diversen Eigenschaften und eine/mehrere davon ist/sind ein Array

    z.B.:

    VB.NET-Quellcode

    1. Public Class MeineKlasse
    2. Public Property Name as String
    3. Public Property GelernteSprachen as String()
    4. End Class


    Nun will ich das in einem DataGridView darstellen um meinen Arbeitskollegen das Bearbeiten zu erleichtern. (Speichern und Laden funktioniert bereits)

    Ich wüsste auch wie ich ein Array darstellen könnte, aber nicht wie ich das dem DataGridView beibringe....
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D

    BiedermannS schrieb:

    Ich wüsste auch wie ich ein Array darstellen könnte
    Da solltest Du auf eine DataTable umschwenken, dann wird es echt easy, wie schon @SpaceyX: schrieb.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also wenn die Verarbeitung in .Net auch nur bisserl komplizierter wird, ist ein typDataset anzulegen, und eben ein Dataset<->Array - Konverter zu schreiben - kann soo schlimm auch nicht werden.

    Für primitive Datenverarbeitung kannste auch eine untypisierte DataTable verwenden - mit DataRow.ItemArray= Array1D kannste eine Array-Zeile in eine DataRow schreiben.

    Ich glaub, man kann auch DGV.Rows.Add(Array1D) schreiben, also Werte direkt ins DGV, wenndedas toll findest.

    Ah - vergessen! typisiertes Databinding geht mit Einschränkungen auch ohne Dataset, mit mehr oder weniger normalen Klassen. Kommt also auf deine Klassen an, aber eine BindingList(Of deineKlasse) kann u.U. schon sehr schick sein.
    Guggemol PictureViewer, wie da an FileInfo als DataSource eingerichtet wird.
    Selbes geht mit anneren Klassen auch, auch hierarchische Klassen, auch mit Read/Write.
    @RodFromGermany:
    Wie gesagt, die Verwendung über COM ist wichtig und dann müsste ich einen eigenen Wrapper schreiben damit das in COM verfügbar ist oder einen Loader bauen, der dynamisch das DataSet anlegt und befüllt bzw. die Daten später wieder in die Klassen füllt.

    @ErfinderDesRades:
    Ich werd mir die BindingList mal ansehen...
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D