2010-06-01 13 views
6

Zu Beginn, was ich habe, ist eine einfache Winforms-App, mit nur einer Schaltfläche zum Speichern und Laden, und mit einem DataGridview-Steuerelement, um Daten zu halten. Ich möchte einige Daten in das Steuerelement eingeben, die Schaltfläche "Speichern" drücken und alle Daten in einer Datei lokal auf dem Computer speichern. Wenn ich auf "load" klicke, wird die Datei geladen und das Steuerelement entsprechend gefüllt Alle Zeilen, Spalten und Daten sind dieselben wie beim Speichern.C# - Ein DataGridView in Datei speichern und laden

Obwohl es für mich ziemlich einfach klingt, kann ich keine gute Möglichkeit finden, die Daten zu speichern und zu laden. Kann ich ein paar Hinweise oder Beispiele bekommen, um mich selbst zu beginnen?

Vielen Dank.

Antwort

7

Bind Datagridview zu einer Datatable, und verwenden Sie die Datatable ReadXml() und WriteXml() Methoden, um die Daten in eine Datei zu lesen und zu schreiben.

Wenn mehrere Gitter an mehrere verknüpfte Tabellen gebunden sind, können Sie das Schema mit einem DataSet darstellen und die Methoden ReadXml() und WriteXml() von DataSet zum Lesen und Schreiben des gesamten Schemas verwenden.

Es gibt ein Beispiel auf der MSDN-Seite für DataTable.WriteXml(), die Sie hilfreich finden könnten.

3

Ich habe eine einfache Art und Weise zu speichern Datagridview in einer Datei geprüft:

//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 für eine solche Datei in einem Datagridview Laden:

//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, dass die Datagridview Kontrolle übernommen haben hat feste Spalten, in Ihrer spezifischen Situation sollten Sie einige Codes hinzufügen, um neue Spalten einzufügen oder eine neue Gridview zu erstellen.

Verwandte Themen