我尝试使用 if 语句来检查一张表是否已经被创建。我只想创建一张表,但现在每次我点击按钮存储信息时都会创建一张表。有什么建议吗?
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");
}
}
在我的第一次运行中,我输入了两个不同的信息并按下了按钮。这两个信息都进入了同一个表格中,就像我想要的那样。但是,我似乎无法正确编写我的 if 语句。当我运行上面的代码时,它可以在空的 XML(没有表格)中工作,但只要“Gjester”表格被创建,它就会显示“DataTable 名为 'Gjester' 已经属于此 DataSet。”但这不是我的 if 语句应该避免的吗?按照我现在的编写方式,它不应该只添加信息而不尝试创建新表格吗?