XML文件未由DataSet对象更新

时间:2017-05-13 18:52:32

标签: xml datagridview dataset

当我添加新行时,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将无法保存如果我要关闭程序,最后一次更改。

这是我的问题:

Image of my problem

0 个答案:

没有答案