关闭表单

时间:2016-08-08 00:29:31

标签: c# winforms datagridview

我有一个未绑定到数据库中的表的datagridview。 datagridview由下拉列表的内容和按钮单击上的文本框填充。我想阻止每次关闭表单时删除记录。有没有办法保存datagridview中的记录而无需创建数据库表?

以下是我的代码:

private void btnInsert_Click(object sender, EventArgs e)
{
    this.dgInsertedInfo.Rows.Add(ddlVendorID.Text, txtDate.Text);
}

2 个答案:

答案 0 :(得分:2)

你有很多选择。这是一个使用XML serialization的简单解决方案。

请注意,它做了一些假设:

  • 数据全部是字符串
  • DataGridView已包含所有列

要保存其他数据类型,您应该创建一个可序列化的结构!

private void saveButton_Click(object sender, EventArgs e)
{
    List<List<string>> data = new List<List<string>>();

    foreach(DataGridViewRow row  in dgInsertedInfo.Rows)
    {
       List<string> rowData = new List<string>();
       foreach (DataGridViewCell cell in row.Cells)
           rowData.Add(cell.FormattedValue.ToString());
       data.Add(rowData);
    }

    XmlSerializer xs = new XmlSerializer(data.GetType());
    using (TextWriter tw = new StreamWriter(yourFileName))
    {
        xs.Serialize(tw, data);
        tw.Close();
    }
}

private void loadButton_Click(object sender, EventArgs e)
{
    List<List<string>> data = new List<List<string>>();

    XmlSerializer xs = new XmlSerializer(data.GetType());
    using (TextReader tr = new StreamReader(yourFileName))
         data = (List<List<string>>) xs.Deserialize(tr);

    foreach (List<string> rowData in data)
        dgInsertedInfo.Rows.Add(rowData.ToArray());
}

答案 1 :(得分:0)

您可以编写自己的OWN类并将其另存为设置属性。

property setting

课程设置:

namespace MyNamespace
{
    public class Settings
    {
        private ObservableCollection DataGridItemsProp;
        public ObservableCollection DataGridItems
        {
             get { return DataGridItemsProp; }
             set { DataGridItemsProp = value; }
        }
    }
}

获取并保存您的设置:

//get settings
var datagrid = Properties.Settings.Default.UserSettings;

//save settings
Properties.Settings.Default.UserSettings= datagrid;
Properties.Settings.Default.Save();