首先,我有一個簡單的Winforms應用程序,只有一個保存和加載按鈕,以及一個datagridview控件來保存數據。我想要做的是向控制中輸入一些數據,點擊保存按鈕,並將所有數據保存到本地計算機上的文件中,當我點擊加載時,它會加載文件並適當地填充控件,保留所有行,列和數據與保存時相同。C# - 保存DataGridView文件並加載
儘管對我來說聽起來相當簡單,但我似乎找不到一種保存和加載數據的好方法。我能得到一些指針或示例來啓動自己嗎?
謝謝。
首先,我有一個簡單的Winforms應用程序,只有一個保存和加載按鈕,以及一個datagridview控件來保存數據。我想要做的是向控制中輸入一些數據,點擊保存按鈕,並將所有數據保存到本地計算機上的文件中,當我點擊加載時,它會加載文件並適當地填充控件,保留所有行,列和數據與保存時相同。C# - 保存DataGridView文件並加載
儘管對我來說聽起來相當簡單,但我似乎找不到一種保存和加載數據的好方法。我能得到一些指針或示例來啓動自己嗎?
謝謝。
將DataGridView綁定到DataTable,並使用DataTable ReadXml()
和WriteXml()
方法讀取和寫入數據到文件。
如果您有多個網格綁定到多個相關的表,您可以使用DataSet來表示模式,並使用DataSet的ReadXml()
和WriteXml()
方法來讀取和寫入整個模式。
在DataTable.WriteXml()的MSDN頁面上有一個示例,您可能會發現它有幫助。
我已經測試了一個簡單的方法來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。