C# - 将DataGridView保存到文件并加载

8
首先,我有一个简单的Winforms应用程序,只有保存和加载按钮,并且有一个datagridview控件来存储数据。我想要做的是将一些数据输入到控件中,点击保存按钮,将所有数据保存到计算机本地的文件中,当我点击加载时,它会加载文件并适当地填充控件,保持所有行、列和数据与保存时相同。
尽管对我来说听起来相当简单,但我似乎无法找到一个好的方法来保存和加载数据。我能得到一些指针或示例来开始吗?
谢谢。
2个回答

9
将 DataGridView 绑定到 DataTable,使用 DataTable 的 ReadXml()WriteXml() 方法读取和写入数据到文件。
如果你有多个网格绑定到多个相关表,可以使用 DataSet 表示架构,并使用 DataSet 的 ReadXml()WriteXml() 方法读取和写入整个架构。
MSDN 页面上有一个关于 DataTable.WriteXml() 的示例,可能会对你有所帮助。

3

我尝试了一种简单的方法将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控件具有固定列数。在你的具体情况下,你需要添加一些代码来插入新列或创建一个新的GridView。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接