C# DataGridView记录在关闭表单后消失
我有一个datagridview,它没有绑定到数据库中的表。datagridview由下拉列表的内容和单击按钮时的文本框填充。我希望防止每次关闭表单时删除记录。是否有一种方法可以保存datagridview中的记录,而无需创建数据库表 下面是我的代码:C# DataGridView记录在关闭表单后消失,c#,winforms,datagridview,C#,Winforms,Datagridview,我有一个datagridview,它没有绑定到数据库中的表。datagridview由下拉列表的内容和单击按钮时的文本框填充。我希望防止每次关闭表单时删除记录。是否有一种方法可以保存datagridview中的记录,而无需创建数据库表 下面是我的代码: private void btnInsert_Click(object sender, EventArgs e) { this.dgInsertedInfo.Rows.Add(ddlVendorID.Text, txtDate.Text)
private void btnInsert_Click(object sender, EventArgs e)
{
this.dgInsertedInfo.Rows.Add(ddlVendorID.Text, txtDate.Text);
}
您可以编写自己的类并将其另存为设置属性 课程设置:
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();
你有很多选择。下面是一个使用的简单解决方案 请注意,它做出了一些假设:
- 数据都是字符串
- 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());
}
private void saveButton\u单击(对象发送者,事件参数e)
{
列表数据=新列表();
foreach(dgInsertedInfo.Rows中的DataGridViewRow行)
{
List rowData=新列表();
foreach(row.Cells中的DataGridViewCell单元格)
添加(cell.FormattedValue.ToString());
data.Add(rowData);
}
XmlSerializer xs=新的XmlSerializer(data.GetType());
使用(TextWriter tw=新StreamWriter(您的文件名))
{
序列化(tw,数据);
tw.Close();
}
}
私有无效加载按钮\u单击(对象发送者,事件参数e)
{
列表数据=新列表();
XmlSerializer xs=新的XmlSerializer(data.GetType());
使用(TextReader tr=new StreamReader(yourFileName))
数据=(列表)xs.反序列化(tr);
foreach(列出数据中的行数据)
dInsertedInfo.Rows.Add(rowData.ToArray());
}
您必须以其他方式保存它,如保存在文本文件中。但是如果你有非常大的记录,这是没有效率的。或者您真的需要关闭表单或隐藏它来处理它吗?在数据库中保存它有什么问题?