0

我正在编写一个程序,它将项目添加到DataGridView并将输入保存到通过单击按钮(如果不存在)创建的 xml 文件中。这工作正常。但是如果我重新启动程序,它应该将每个项目加载到DataGridView. 但我必须先添加一个新项目,然后显示所有其他项目。因此,如果 Form1 加载,项目将不会加载。我想我必须输入一些代码,Form1_Load()但我不知道。我试图投入XElement.Load();Form1_Load()没有成功。在这里你可以看到我的代码:

XElement xmlFile;
XElement xmlnode;

private void Form1_Load(object sender, EventArgs e)
{
    xmlFile = XElement.Load(@"C:\Users\rs\Desktop\Save\save.xml");
    xmlFile.Add(xmlnode);
}

private void btnSave_Click(object sender, EventArgs e)
{
    if (!File.Exists(@"C:\Users\rs\Desktop\Save\save.xml"))
    {
        using (File.Create(@"C:\Users\rs\Desktop\Save\save.xml")) { }
    }

    xmlnode = new XElement("iToDo",
        new XElement("Name", txtName.Text),
        new XElement("Priority", comPrio.Text),
        new XElement("StartDate", txtStart.Text),
        new XElement("EndDate", txtEnd.Text),
        new XElement("Comment", txtComment.Text)
     );

     try
     {
        xmlFile = XElement.Load(@"C:\Users\rs\Desktop\Save\save.xml");
        xmlFile.Add(xmlnode);
     }

     catch (XmlException)
     {
         xmlFile = new XElement("ToDos", xmlnode);
     }

     xmlFile.Save(@"C:\Users\rs\Desktop\Save\save.xml");
     DataSet flatDataSet = new DataSet();
     flatDataSet.ReadXml(@"C:\Users\rs\Desktop\Save\save.xml");
     DataTable table = flatDataSet.Tables[0];
     dataGridToDo.DataSource = table;
}

有人有想法或可以给我一个提示吗?

提前致谢

干杯

4

1 回答 1

1

您必须将其放入 form1_load 方法中:

 DataSet flatDataSet = new DataSet();
 flatDataSet.ReadXml(@"C:\Users\rs\Desktop\Save\save.xml");
 DataTable table = flatDataSet.Tables[0];
 dataGridToDo.DataSource = table;

我现在已经创建了你的应用程序,这是我的 Form1_Load 方法:

private void Form1_Load(object sender, EventArgs e)
    {
        xmlFile = XElement.Load(@"C:\save.xml");
        xmlFile.Add(xmlnode);

        DataSet flatDataSet = new DataSet();
        flatDataSet.ReadXml(@"C:\save.xml");
        DataTable table = flatDataSet.Tables[0];
        dataGridToDo.DataSource = table;
    }

当我运行应用程序时,我的数据网格会被 xml 数据填充。

于 2013-09-24T11:50:03.793 回答