数据集对象未更新XML文件
添加新行时,数据集不会应用DataGridView的更改数据集对象未更新XML文件,xml,datagridview,dataset,Xml,Datagridview,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");
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将不会保存最后的更改
这是我的问题:
Try:ds.AcceptChanges()@jdweng我尝试了所有这些(仍然不起作用)DataGridView dgv=sender作为DataGridView;dgv.Refresh();dgv.Update();ds.GetChanges();ds.AcceptChanges();ds.Tables[“Table”].GetChanges();ds.Tables[“Table”].AcceptChanges();