当我添加新行时,DataSet不会应用DataGridView的更改。
using System;
using System.Data;
using System.IO;
using System.Windows.Forms;
using System.Xml;
namespace DataXML
{
public partial class Form1 : Form
{
private DataSet ds = new DataSet("Database");
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
if (!File.Exists("Database.xml"))
CreateXMLFile();
ds.ReadXml("Database.xml");
DataGridView dgv = new DataGridView();
dgv.DataSource = ds.Tables["Table"];
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dgv.Dock = DockStyle.Fill;
dgv.CellValueChanged += new DataGridViewCellEventHandler(CellValueChanged);
Controls.Add(dgv);
}
private void CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
MessageBox.Show(ds.GetXml());
ds.WriteXml("Database.xml");
}
private void CreateXMLFile()
{
using (DataTable dt = new DataTable("Table"))
{
dt.Columns.Add("Column1");
dt.Columns.Add("Column2");
dt.Columns.Add("Column3");
ds.Tables.Add(dt);
}
using (XmlTextWriter xtw = new XmlTextWriter("Database.xml", null))
{
XmlDocument xd = new XmlDocument();
xd.LoadXml(ds.GetXml());
xtw.Formatting = Formatting.Indented;
xd.Save(xtw);
xtw.Close();
}
}
}
}
我不明白为什么会这样,只需创建新的“Windows窗体应用程序”并粘贴此代码进行测试。
每次你将使用新的XML内容更改单元格值的消息框,但有时(我仍然不知道具体到什么时候)内容不会被DataSet更改为XML文件,因此DataGridView将无法保存如果我要关闭程序,最后一次更改。
这是我的问题: