テーブルが既に作成されているかどうかを確認する if ステートメントを作成しようとしています。テーブルを 1 つだけ作成したいのですが、現状では、ボタンをクリックして情報を保存するたびにテーブルを作成します。助言がありますか?
DataTable dt;
private void InitDataTable()
{
if () {
}
dt = new DataTable();
DataSet ds = new DataSet();
ds.ReadXml("gjesteInfo.xml");
ds.Tables.Add(dt);
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);
ds.Merge(dt);
ds.WriteXml("gjesteInfo.xml");
}
private void lagre_Click(object sender, EventArgs e)
{
InitDataTable();
gjesterutenrom.Items.Add(gjestenavnInput.Text);
gjestenavnInput.Text = "";
datoInnsjekk.Text = "";
antallDager.Text = "";
DataSet onClick = new DataSet();
onClick.ReadXml("gjesteInfo.xml");
lagredeGjester.DataSource = onClick.Tables[0];
}
上記のように、lagredeGjester という名前の DataGridView を使用して、XLM に格納されている情報を取得しようとしています。
更新された質問:
今、私はこのようなコードを書きました:
DataTable dt;
DataSet ds = new DataSet();
private void InitDataTable()
{
if( ds.Tables.Contains("Gjester") )
{
dt.Rows.Add(gjestenavnInput.Text, datoInnsjekk.Text, antallDager.Text);
ds.Merge(dt);
ds.WriteXml("gjesteInfo.xml");
}
else {
dt = new DataTable("Gjester");
ds.ReadXml("gjesteInfo.xml");
ds.Tables.Add(dt);
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);
ds.Merge(dt);
ds.WriteXml("gjesteInfo.xml");
}
}
最初の実行では、2 つの異なる情報を入力してボタンを押しました。両方の情報が、希望どおりに同じテーブルに表示されました。しかし、if ステートメントを正しく記述できないようです。上記のコードを実行すると、空の XML (テーブルなし) で動作しますが、「Gjester」テーブルが作成されている限り、「「Gjester」という名前の DataTable は既にこの DataSet に属しています」と表示されます。しかし、これは私のif文が防ぐべきものではありませんか? 私が今書いたように、情報を追加するだけで、新しいテーブルを作成しようとしないでください。