C# と .Net を使用して XML に情報を保存しようとしていますが、ボタンクリック イベントを使用して 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 ファイルの古いコンテンツを上書きします。