C# - сохранение DataGridView в файл и загрузка
для начала у меня есть простое приложение Winforms, с помощью кнопки "Сохранить и загрузить" и элемента управления datagridview для хранения данных. Я хочу ввести некоторые данные в элемент управления, нажать кнопку "Сохранить", и он сохранит все данные в файл локально на компьютере, и когда я нажму "загрузить", он загружает файл и заполняет элемент управления соответствующим образом, сохраняя все строки, столбцы и данные такими же, как при сохранении.
хотя это звучит довольно просто для меня, я не могу найдите хороший способ сохранить и загрузить данные. Могу ли я получить несколько указателей или примеров, чтобы начать работу?
спасибо.
2 ответов
привязать DataGridView к DataTable и использовать DataTable
ReadXml()
и WriteXml()
методы чтения и записи данных в файл.
если у вас есть несколько сеток, привязанных к нескольким связанным таблицам, вы можете представить схему с набором данных и использовать ReadXml()
и WriteXml()
методы DataSet для чтения и записи всей схемы.
на странице MSDN есть пример для DataTable.WriteXml () что вы можете найти полезным.
я протестировал простой способ сохранения datagridview в файл:
//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());
}
}
}
и для загрузки такого файла в 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();
}
}
}
считайте, что я предположил, что элемент управления datagridview имеет фиксированные столбцы, в конкретной ситуации вы должны добавить некоторые коды для вставки новых столбцов или создать новые таблицы.