日期:2014-05-18  浏览次数:20868 次

DataGridView的数据源是XML文档,更新其内容时如何更新XML文档???急!!!
一个C/S结构的程序,XML文档作为DataGridView的数据源,已设置DataGridView的ReadOnly为false,即DataGridView可以进行更新操作,想要实现更新DataGridView中的内容时,更新XML文档,以前只做过更新数据库的,请大家帮忙了!

------解决方案--------------------
参考DataSet数据源与XML的互换性
------解决方案--------------------
可以订阅数据发生改变的事件,并在数据改变后写到Xml文件中(你自己要考虑效率问题以及什么时候写)。

C# code

    private void Form1_Load(object sender, EventArgs e)
    {
        string xml=@"<?xml version=""1.0"" standalone=""yes"" ?> 
                    <Department>
                      <Student>
                        <Name>hello</Name> 
                        <Age>123</Age> 
                      </Student>
                      <Student>
                        <Name>world</Name> 
                        <Age>456</Age> 
                      </Student>
                    </Department>";

        DataSet dataset = new DataSet();
        dataset.ReadXml(new System.IO.StringReader(xml));
        DataTable table = dataset.Tables[0];
        this.dataGridView1.DataSource = table;

        table.RowChanged += new DataRowChangeEventHandler(OnTableChanged);         //<---
        table.RowDeleted += new DataRowChangeEventHandler(OnTableChanged);         //<---
    }

    void OnTableChanged(object sender, DataRowChangeEventArgs e)
    {
        System.Diagnostics.Trace.TraceInformation("DataTable changed - " + e.Action);
        DataTable table = sender as DataTable;
        if (table != null)
        {
            table.DataSet.WriteXml("c:\\temp\\temp.xml");                          //<---
        }
    }

------解决方案--------------------
探讨
可以订阅数据发生改变的事件,并在数据改变后写到Xml文件中(你自己要考虑效率问题以及什么时候写)。


C# code
private void Form1_Load(object sender, EventArgs e)
{
string xml=@"<?xml version=""1.0"" standalone=""yes"" ?>
<Department>
<Student>
<Name>hello</Name>
<Age>123</Age>