我有一个通过 Visual Studio 创建的 dataGridView。
然后我有一个保存方法,它将表复制到数据集,然后将其保存到 XML:
if (savefile.ShowDialog() == DialogResult.OK)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable("whereClause");
ds.Tables.Add(dt);
for (int i = 1; i < dataGridView1.Columns.Count + 1; i++)
{
DataColumn column = new DataColumn(dataGridView1.Columns[i - 1].Name);
dt.Columns.Add(column);
}
int ColumnCount = dataGridView1.Columns.Count;
foreach (DataGridViewRow dr in dataGridView1.Rows)
{
DataRow dataRow = dt.NewRow();
for (int i = 0; i < ColumnCount; i++)
{
dataRow[i] = dr.Cells[i].Value;
}
dt.Rows.Add(dataRow);
}
XmlTextWriter newXml = new XmlTextWriter(savefile.FileName, Encoding.UTF8);
ds.WriteXml(newXml);
newXml.Close();
}
然后我有一个匹配的加载方法:
if (openfile.ShowDialog() == DialogResult.OK)
{
//Create xml reader
XmlReader xmlFile = XmlReader.Create(openfile.FileName, new XmlReaderSettings());
DataSet dataSet = new DataSet();
//Read xml to dataset
dataSet.ReadXml(xmlFile);
dataGridView1.DataSource = dataSet.Tables["whereClause"];
//Close xml reader
xmlFile.Close();
}
我的问题是,当重新加载此数据时,它会在表的一侧创建新列,并且不会将数据加载到我现有的表结构中。我查看了 DataSet.Merge 但努力让它按要求运行。如何重新加载 XML 并将其映射到表结构中的现有列?如有必要,可以在加载时清除整个表。