Datagridview in ArrayList schreiben

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von OnkelR.

    Datagridview in ArrayList schreiben

    Hallo
    kann man eine Datagridview in eine List of Array schreiben?
    Mein Ansatz

    VB.NET-Quellcode

    1. Dim i As Integer
    2. Dim List As New List(Of Array)
    3. Do Until i = DataGridView1.RowCount
    4. List.Add() 'jede Zeile aus der Datagridview als Array?
    5. i += 1
    6. Loop


    Im Grunde genommen muss ich jetzt nur noch wissen wie ich eine Zeile aus der Datagridview in ein Array schreibe.
    mfg
    Wenn ich deine Posts verfolge glaube ich, daß du den aktuellen Inhalt deines gebundenen DGV's in eine DataTable schubsen willst
    um die Daten der DataTable in einem Rutsch in eine Excel-Tabelle zu schreiben.
    Ich kenne dein Modell nicht, aber bei Allem was ich vermute wäre dies mein Vorschlag:

    Importiere dein DataSet zu Beginn deines Form-Codes um im Code auf die typisierten DataRows zugreifen zu können.
    zB: (Bezeichnungen anpassen)

    VB.NET-Quellcode

    1. Imports MusikDB.AudioDataSet


    Schreib dir eine Property, welche den aktuellen Inhalt der betreffenden BindingSource (gefiltert/sortiert) darstellt.
    zB: (DataSet-, Tabellen-, BindingSourcebezeichnung anpassen)

    VB.NET-Quellcode

    1. Private ReadOnly Property TitelBindingSource_Liste() As Generic.IEnumerable(Of MusikDB.AudioDataSet.TitelRow)
    2. Get
    3. If Me.TitelBindingSource IsNot Nothing Then
    4. Dim Liste = From drv In TitelBindingSource.Cast(Of DataRowView)()
    5. Where DirectCast(drv.Row, AudioDataSet.TitelRow).RowState <> DataRowState.Deleted
    6. Select DirectCast(drv.Row, AudioDataSet.TitelRow)
    7. Return Liste
    8. End If
    9. Return Nothing
    10. End Get
    11. End Property


    Aus einer Abfrage kannste nun die DataTable erzeugen:

    VB.NET-Quellcode

    1. Private Sub btn_createDT_Click(sender As Object, e As EventArgs) Handles btn_createDT.Click
    2. 'Dim dt1 As DataTable = (From Eintrag In TitelBindingSource_Liste Select Eintrag).CopyToDataTable
    3. Dim dt2 As DataTable = TitelBindingSource_Liste.CopyToDataTable()
    4. End Sub
    @Onkel_Tom
    ich versteh das nicht so ganz.
    Ich habe eine Datagridview die an eine BindingSource gebunden ist (wegen dem Filtern). Die BiningSource ist an eine DataTabel gebunden. Ich möchte nun die gefilterten Elemente aus der Datagridview in eine Excel Datei exportieren. Deswegen bräuchte ich eine neue DataTabel mit den gefilterten Elementen oder eben eine List of Array um die Ergebnisse zu exportieren. Die Datatabel, BindingSource und Datagridview befinden sich alle in einer Klasse.
    Also vermute ich mal dass ich schon mal nichts importieren muss. Wenn ich anstatt MusikDB.AudioDataSet meine Datatabel einsetzt erscheinen Fehler.
    Die BiningSource ist an eine DataTabel gebunden

    ... und die DataTable befindet sich in einem typisiertem DataSet? (mit DataSet-Designer kreiert)

    Wenn nicht, dann verlängert sich die Liste möglicher Fehlerursachen deutlich.

    Wenn ich anstatt MusikDB.AudioDataSet meine Datatabel einsetzt erscheinen Fehler

    MusikDB - ersetzen durch deine Anwendungsbezeichnung/Assemblyname/Stammnamespace
    Also muss ich das irgendwie anders machen?

    ...ja, vor Allem einfacher.
    Erstell dir ein DataSet mit dem Assistenten und erzeuge dazugehörige Tabellen in dem DataSet-Designer.
    Achte bei den Spalten der Tabellen auf die richtigen Datentypen, umso erfolgreicher ist hinterher
    die Darstellung in der Excel-Tabelle.

    Wenn Du garnicht klar kommst, dann zippe mir dein Projekt. Ab Sonntag könnt ich dran arbeiten.