我正在尝试使用 C# 和 .Net 将信息存储在 XML 中,但只有我使用 buttonclick 事件编写并“提交”到 XML 的最后一个信息。我之前输入的内容被覆盖。
这是代码:
private void lagre_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("Fullt navn");
DataColumn dc2 = new DataColumn("Start dato");
DataColumn dc3 = new DataColumn("Antall dager");
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
dt.Rows.Add(gjestenavnInput.Text, datoInnsjekk.Text, antallDager.Text);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
ds.WriteXml("gjesteInfo.xml");
gjesterutenrom.Items.Add(gjestenavnInput.Text);
gjestenavnInput.Text = "";
datoInnsjekk.Text = "";
antallDager.Text = "";
}
我试图将 DataTable、DataColumn 和 Dataset 的构造放在按钮事件之外,但它不会在 XML 中存储任何数据。也许dt.rows.add等有问题,但我不知道该怎么写。有任何想法吗?
感谢您到目前为止所做的努力,RyanWH。:) 我现在试着玩弄你的建议,也许我误解了一些东西,但这就是我所做的:
private void InitDataTable()
{
dt = new DataTable();
DataSet ds = new DataSet();
ds.ReadXml("gjesteInfo.xml");
dt = ds.Tables[0];
if (dt.Columns == null){
DataColumn dc1 = new DataColumn("Fullt navn");
DataColumn dc2 = new DataColumn("Start dato");
DataColumn dc3 = new DataColumn("Antall dager");
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
}
ds.WriteXml("gjesteInfo.xml");
}
private void lagre_Click(object sender, EventArgs e)
{
InitDataTable();
dt.Rows.Add(gjestenavnInput.Text, datoInnsjekk.Text, antallDager.Text);
gjesterutenrom.Items.Add(gjestenavnInput.Text);
gjestenavnInput.Text = "";
datoInnsjekk.Text = "";
antallDager.Text = "";
}
这会产生相同的结果。它会覆盖 XML 文件中的旧内容。