0

我正在编写一个简短的程序来显示我所有的待办事项。我有 2 个标签。1 个选项卡用于创建新的待办事项,另一个选项卡用于向我显示我选择的每个待办事项的详细信息。所以我必须将创建的待办事项保存在一个 xml 文件中。为此,我正在使用DataTable并且DataSet效果很好。这是我的代码:

DataTable datatable = new DataTable();
            datatable.TableName = "SaveInput";

            DataColumn dc1 = new DataColumn("Name");
            DataColumn dc2 = new DataColumn("Priority");
            DataColumn dc3 = new DataColumn("StartDate");
            DataColumn dc4 = new DataColumn("EndDateSoll");
            DataColumn dc5 = new DataColumn("EndDateIst");
            DataColumn dc6 = new DataColumn("Comment");

            datatable.Columns.Add(dc1);
            datatable.Columns.Add(dc2);
            datatable.Columns.Add(dc3);
            datatable.Columns.Add(dc4);
            datatable.Columns.Add(dc5);
            datatable.Columns.Add(dc6);

            datatable.Rows.Add(txt_Name.Text, combox_Priority.Text, txt_Beginn.Text, txt_EndSoll.Text, txt_EndIst.Text, txt_Bemerkungen.Text);

            DataSet dataset = new DataSet();

            dataset.Tables.Add(datatable);
            dataset.DataSetName = "MyProgram";

            dataset.WriteXml(@"C:\Users\rs\Desktop\Test\save.xml");

但我现在的问题是:如果我在 tab1 中创建一个新的“To Do”,它会替换 .xml 文件中的新“To Do”。因此,如果我查看 .xml 文件,仍然有 1 个“待办事项”。我只想在 .xml 文件中写更多的表。所以我的 .xml 文件如下所示:

<MyProgram>
  <SaveInput>
    <Name>todo1</Name>
    <Priority>high</Priority>
    <StartDate>today</StartDate>
    <EndDateSoll>later</EndDateSoll>
    <EndDateIst>not finished</EndDateIst>
    <Comment>blabla</Comment>
  </SaveInput>
</MyProgram>

但它应该是这样的,例如:

<MyProgram>
  <SaveInput>
    <Name>todo1</Name>
    <Priority>high</Priority>
    <StartDate>today</StartDate>
    <EndDateSoll>later</EndDateSoll>
    <EndDateIst>not finished</EndDateIst>
    <Comment>blabla</Comment>

    <Name>todo2</Name>
    <Priority>high</Priority>
    <StartDate>yesterday</StartDate>
    <EndDateSoll>tomorrow</EndDateSoll>
    <EndDateIst>not finished</EndDateIst>
    <Comment>testtest</Comment>
  </SaveInput>
</MyProgram>

我希望有人可以帮助我或给我一个提示,以便我可以创建多个待办事项。

干杯

编辑:这是一个 WinForm 应用程序

4

2 回答 2

2

这段代码应该适合你。

一探究竟

DataSet ds = new DataSet();
            if (File.Exists(@"C:\Users\rs\Desktop\Test\save.xml"))
            {
                ds.ReadXml(@"C:\Users\rs\Desktop\Test\save.xml");

                ds.Tables[0].Rows.Add(txt_Name.Text, combox_Priority.Text, txt_Beginn.Text, txt_EndSoll.Text, txt_EndIst.Text, txt_Bemerkungen.Text);
                ds.WriteXml(@"C:\Users\rs\Desktop\Test\save.xml");
            }
            else
            {
                DataTable datatable = new DataTable();
                datatable.TableName = "SaveInput";

                DataColumn dc1 = new DataColumn("Name");
                DataColumn dc2 = new DataColumn("Priority");
                DataColumn dc3 = new DataColumn("StartDate");
                DataColumn dc4 = new DataColumn("EndDateSoll");
                DataColumn dc5 = new DataColumn("EndDateIst");
                DataColumn dc6 = new DataColumn("Comment");

                datatable.Columns.Add(dc1);
                datatable.Columns.Add(dc2);
                datatable.Columns.Add(dc3);
                datatable.Columns.Add(dc4);
                datatable.Columns.Add(dc5);
                datatable.Columns.Add(dc6);

                datatable.Rows.Add(txt_Name.Text, combox_Priority.Text, txt_Beginn.Text, txt_EndSoll.Text, txt_EndIst.Text, txt_Bemerkungen.Text);

                DataSet dataset = new DataSet();

                dataset.Tables.Add(datatable);
                dataset.DataSetName = "MyProgram";

                dataset.WriteXml(@"C:\Users\rs\Desktop\Test\save.xml");
            }
于 2013-09-04T07:50:52.827 回答
0

如果我错了,请纠正我,但是从您的代码看来,您总是创建一个仅包含新值的新数据集。你会先阅读已经存在的 Todos 吗?如果没有,您只需始终覆盖您的 xml 文件和以前的条目。

于 2013-09-04T07:39:17.583 回答