To start off, what I have is a simple Winforms app, with just a save and load button, and with a datagridview control to hold data. What I am looking to do is input some data into the control, hit the save button, and it save all the data to a file locally on the computer, and when I hit load, it loads the file and populates the control appropriately, keeping all rows, columns, and data the same as when saved.
Although it sounds fairly simple to me, I cant seem to figure a good way to save and load the data. Can I get a few pointers or examples to get myself started?
Thank you.
Bind the DataGridView to a DataTable, and use the DataTable
ReadXml()
and WriteXml()
methods to read and write the data to a file.
If you ever have multiple grids bound to multiple related tables, you can represent the schema with a DataSet and use the ReadXml()
and WriteXml()
methods of DataSet to read and write the whole schema.
There is an example on the MSDN page for DataTable.WriteXml() that you might find helpful.
I have tested a simple way to save datagridview to a file :
//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());
}
}
}
and for loading such a file into a datagridview:
//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();
}
}
}
Consider that I have assumed that the datagridview control has fixed columns, in you specific situation you should add some codes to insert new columns or create a new gridview.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With