8 Stimmen

C# - Speichern einer DataGridView in einer Datei und Laden

Um zu beginnen, was ich habe, ist eine einfache Winforms app, mit nur eine Speichern und Laden-Schaltfläche, und mit einem Datagridview-Steuerelement, um Daten zu halten. Was ich suche, ist einige Daten in das Steuerelement eingeben, drücken Sie die Schaltfläche "Speichern", und es speichern Sie alle Daten in eine Datei lokal auf dem Computer, und wenn ich drücken Sie laden, es lädt die Datei und füllt das Steuerelement entsprechend, halten alle Zeilen, Spalten und Daten die gleichen wie beim Speichern.

Obwohl es sich für mich recht einfach anhört, finde ich keinen guten Weg, um die Daten zu speichern und zu laden. Kann ich ein paar Hinweise oder Beispiele bekommen, um den Anfang zu machen?

Ich danke Ihnen.

9voto

Igby Largeman Punkte 16135

Binden Sie die DataGridView an eine DataTable, und ReadXml() et WriteXml() Methoden zum Lesen und Schreiben der Daten in eine Datei.

Wenn Sie mehrere Raster haben, die an mehrere verwandte Tabellen gebunden sind, können Sie das Schema mit einem DataSet darstellen und die ReadXml() et WriteXml() Methoden von DataSet zum Lesen und Schreiben des gesamten Schemas.

Auf der MSDN-Seite gibt es ein Beispiel für DataTable.WriteXml() die Sie vielleicht hilfreich finden.

4voto

Ich habe einen einfachen Weg getestet, um datagridview in einer Datei zu speichern:

//DataGridView dgv=...
string file= "c:\\mygrid.bin";
using (BinaryWriter bw = new BinaryWriter(File.Open(file, FileMode.Create)))
{
    bw.Write(dgv.Columns.Count);
    bw.Write(dgv.Rows.Count);
    foreach (DataGridViewRow dgvR in dgv.Rows)
    {
       for (int j = 0; j < dgv.Columns.Count; ++j)
       {
           object val=dgvR.Cells[j].Value;
           if (val == null)
           {
                bw.Write(false);
                bw.Write(false);
            }
            else
            {
                bw.Write(true);
                bw.Write(val.ToString());
             }
         }
    }

und zum Laden einer solchen Datei in eine Datentabellenansicht:

//DataGridView dgv = ...
dgv.Rows.Clear();
string file="c:\\mygrid.bin";
using (BinaryReader bw = new BinaryReader(File.Open(file, FileMode.Open)))
{
   int n=bw.ReadInt32();
   int m=bw.ReadInt32();
   for(int i=0;i<m;++i)
   {
         dgv.Rows.Add();
         for (int j = 0; j < n; ++j)
         {
               if (bw.ReadBoolean())
               {                                        
                     dgv.Rows[i].Cells[j].Value = bw.ReadString();                                        
               }
               else bw.ReadBoolean();
          }
     }
} 

Bedenken Sie, dass ich davon ausgegangen bin, dass das Datagridview-Steuerelement feste Spalten hat. In Ihrer speziellen Situation sollten Sie einige Codes hinzufügen, um neue Spalten einzufügen oder ein neues Gridview zu erstellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X