关闭表单后,DataGridView记录消失
我有一个datagridview,它没有绑定到数据库中的表。 datagridview由下拉列表的内容和按钮单击上的文本框填充。 我想阻止每次关闭表单时删除记录。 有没有办法保存datagridview中的记录而无需创建数据库表?
以下是我的代码:
private void btnInsert_Click(object sender, EventArgs e) { this.dgInsertedInfo.Rows.Add(ddlVendorID.Text, txtDate.Text); }
你有很多选择。 这是一个使用XML序列化的简单解决方案。
请注意,它做了一些假设:
- 数据都是字符串
- DataGridView已经包含了所有列
要保存其他数据类型,您应该创建一个可序列化的结构!
private void saveButton_Click(object sender, EventArgs e) { List> data = new List>(); foreach(DataGridViewRow row in dgInsertedInfo.Rows) { List rowData = new List (); 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> data = new List>(); XmlSerializer xs = new XmlSerializer(data.GetType()); using (TextReader tr = new StreamReader(yourFileName)) data = (List>) xs.Deserialize(tr); foreach (List rowData in data) dgInsertedInfo.Rows.Add(rowData.ToArray()); }
您可以编写OWN类并将其另存为setting属性。
class级设定:
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();