none
DataGridView in Textdatei speichern RRS feed

  • Frage

  • Hallo,

    ich habe als Prgrammieranfänger folgende Frage:

    wie kann ich den Inhalt eines dataGridViews in eine Textdatei speichern?

    Dienstag, 16. Oktober 2012 18:00

Alle Antworten

  • Hi,

    speicher die Datenquelle deines DataGridView Controls. Wie genau Du das machen kannst, hängt davon ab, welche Datenquelle Du verwendest.

    Bei einem DataSet, bzw. einer DataTable gäbe es bspw. die WriteXml Methode:

      http://msdn.microsoft.com/de-de/library/vstudio/x3zy2whb.aspx

    Bei eigenen Klassen könntest Du serialisieren/deserialisieren.

    Wenns Du nichts dergleichen verwenden solltest, geht es auch manuell:

      http://stackoverflow.com/questions/8457197/c-sharp-datagridview-to-text-file

    Daher poste bitte mal, welche Datenquelle Du an das GridView Control bindest.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Dienstag, 16. Oktober 2012 18:18
    Moderator
  • Hi,
    Danke erst mal für die Antwort.

    also die Daten im DGV kommen aus einem TreeView. Der Code dazu in C# sieht so aus:

    foreach

    (DataGridViewRow selRow in dataGridView.SelectedRows)

                {

                

                   selRow.Cells[1].Value = temp_01;

                    selRow.Cells[2].Value = temp_04;

                    selRow.Cells[3].Value = temp_02;

                }

    Die einzelnen Rows werden so zugefügt:

    dataGridView.Rows.Add();

    Jedesmal wenn eine Row markiert wurde wird also mit Hilfe des ersten Codes aus dem Treeview die Daten in die Row des DGV geschrieben. Hierbei handelt es sich dann um 4 spalten.

    Dienstag, 16. Oktober 2012 18:37
  • Hi,

    die Daten kommen aus einem Treeview? Der Code bzw. die Erklärung kommt mir etwas komisch vor. Warum schreibst Du Daten aus einem Treeview Control (wobei temp_01, temp_02, ... keine Treeview Eigenschaften sind^^) in eine oder mehrere Zeilen eines DataGridView Controls?

    So oder so: Wenn keine Datenquelle existiert, würde ich das Beispiel aus dem letztgenannten Link vorschlagen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 16. Oktober 2012 18:39
    Moderator
  • Zum Hintergrund warum die Daten aus dem TreeView stammen: Ich habe eine Eisenbahn Simulationssoftware und im TreeView werden die Rollmaterialien angezeigt. Mit Hilfe der Variablen temp_01 usw. lese ich die Eigenschaften der Daten aus, hier z.B. der Name und der Dateispeicherort. Diese Daten werden dann in die spalten des DGV übernommen. Die einzelnen Spalteninhalten sollen dann in eine Textdatei geschrieben werden, um aus den einzelnen Rollmaterialien einen Zugverband zu erstellen, der in einer Textdatei gespeichert ist.
    Dienstag, 16. Oktober 2012 18:50
  • Hi,

    das hört sich für mich so an als sei das DataGridView nur eine Art "Zwischenspeichernotlösung". Falls dem so sein sollte: Schmeiß wech :)

    Du solltest dann eher eine Klasse mit den benötigten Eigenschaften erstellen.

    public class DeineKlasse
    {
        public string Name { get; set; }
        public string Description { get; set; }
        ...
    }
    

    Dann erstellst Du dir eine Variable, die eine Liste von Objekten dieser Klasse aufnehmen kann.

    List<DeineKlasse> myValues = new List<DeineKlasse>();
    

    Anstelle die Daten dann ins DataGridView zu schreiben, erzeugst Du dann neue Elemente in myValues. Diese kannst Du dann am Schluss einfach serialisieren und als XML Datei abspeichern. Beim nächsten mal deserialisierst Du die XML Inhalte und hast dann wieder eine List<DeineKlasse>. Hierfür siehe das Beispiel im zweiten Link. Das ist zwar in VB, der Code ist aber recht übersichtlich.

    Falls Du die Daten dennoch im DataGridView anzeigen willst, kannst Du myValues auch als BindingSouce für das DataGridView angeben, dann hast Du alles auf einmal erledigt :)

      http://www.java2s.com/Tutorial/CSharp/0460__GUI-Windows-Forms/UsingaBindingSourcetobindalisttoaDataGridViewcontrol.htm


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 16. Oktober 2012 18:59
    Moderator
  • Hallo,

    Danke. Ich glaube das werde ich mal versuchen mit der Liste, da die Daten auch nach her in einer bestimmten Form in der Textdatei stehen sollen.

    Also im Zwischenspeicher TreeView sehen die Daten folgendermassen aus:

    Lfd, Nr | Name | Richtung (1 oder 0) | Speicherort.

    In der Datei später sollen sie so aussehen:

    [MODELS]
    0001  = "SCHIENE\TRIEBWAGEN\DBAG_ICE3-TZ303-403-503-EPVI_SK2.3dm"
    0002  = "SCHIENE\TRIEBWAGEN\DBAG_ICE3-TZ303-403-603-EPVI_SK2.3dm"
    0003  = "SCHIENE\TRIEBWAGEN\DBAG_ICE3-TZ303-403-703-EPVI_SK2.3dm"
    0004  = "SCHIENE\TRIEBWAGEN\DBAG_ICE3-TZ303-403-803-EPVI_SK2.3dm"
    0005  = "SCHIENE\TRIEBWAGEN\DBAG_ICE3-TZ303-403-303-EPVI_SK2.3dm"
    0006  = "SCHIENE\TRIEBWAGEN\DBAG_ICE3-TZ303-403-203-EPVI_SK2.3dm"
    0007  = "SCHIENE\TRIEBWAGEN\DBAG_ICE3-TZ303-403-103-EPVI_SK2.3dm"
    0008  = "SCHIENE\TRIEBWAGEN\DBAG_ICE3-TZ303-403-003-EPVI_SK2.3dm"

    [NAMES]
    0000  = "#DBAG_ICE3-Tz303-403-503-EpVI_SK2-v7"
    0001  = "DBAG_ICE3-Tz303-403-503-EpVI_SK2-v7"
    0002  = "DBAG_ICE3-Tz303-403-603-EpVI_SK2-v7"
    0003  = "DBAG_ICE3-Tz303-403-703-EpVI_SK2-v7"
    0004  = "DBAG_ICE3-Tz303-403-803-EpVI_SK2-v7"
    0005  = "DBAG_ICE3-Tz303-403-303-EpVI_SK2-v7"
    0006  = "DBAG_ICE3-Tz303-403-203-EpVI_SK2-v7"
    0007  = "DBAG_ICE3-Tz303-403-103-EpVI_SK2-v7"
    0008  = "DBAG_ICE3-Tz303-403-003-EpVI_SK2-v7"

    [DIRECTIONS]
    0000  = 0
    0001  = 0
    0002  = 0
    0003  = 1
    0004  = 1
    0005  = 0
    0006  = 0
    0007  = 1
    0008  = 1

    Dienstag, 16. Oktober 2012 19:07
  • Hi,

    warum genau dieses Format? Müssen die Dateien auch mit anderen Programmen, die nur dieses Format verstehen, verwendet werden?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 16. Oktober 2012 19:50
    Moderator
  • Ja, die Dateien (werden dann als .rss-Dateien abgespeichert) müssen dieses Format haben, damit die Eisenbahnsimulation aus dieser rss Datei in der 3D Ansicht einen Zugverband darstellen kann. Das heisst ich möchte einen Zugverband ausserhalb der Simulation erstellen, daher muss dieses Format so genommen werden.
    Dienstag, 16. Oktober 2012 19:58
  • Hallo nochmal,

    Vielen Dank für die Hilfe bei meinem Problem. Nach weiteren Recherchen habe ich es geschafft, die Daten so auszulesen und in ein DGV zu bekommen, wie ich es benötige.

    Gruß

    Martin


    Gruß aus Wolfsburg Martin

    Dienstag, 29. Januar 2013 13:53