所以我找到了以下代码来保存以获取datagridview中的内容并将其保存到xml文件中。我正在尝试编写相反的功能(打开)。到目前为止,我有以下代码,它一直工作到行部分。我无法弄清楚底部的逻辑来做我需要它做的事情。到目前为止,我得到的是关于不匹配的类型的错误。任何帮助,将不胜感激。另外,我在开放函数中得到一个关于DataTable的奇怪错误,它不支持来自Xml的模式推断。当我尝试readxml?
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable("itemstable");
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
dt.Columns.Add(dataGridView1.Columns[i].Name, typeof(System.String));
}
DataRow myrow;
int icols = dataGridView1.Columns.Count;
foreach (DataGridViewRow drow in this.dataGridView1.Rows)
{
myrow = dt.NewRow();
for (int i = 0; i <= icols - 1; i++)
{
myrow[i] = drow.Cells[i].Value;
}
dt.Rows.Add(myrow);
}
dt.WriteXml("items.xml");
}
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable("itemstable");
dt.ReadXml("items.xml");
for (int i = 0; i < dt.Columns.Count; i++)
{
dataGridView1.Columns.Add(dt.Columns[i].ColumnName.ToString(), dt.Columns[i].ColumnName.ToString());
}
DataRow myrow;
int icols = dt.Columns.Count;
foreach (DataRow drow in dt.Rows)
{
myrow = dataGrideView1.NewRow();
for (int i = 0; i <= icols - 1; i++)
{
myrow[i] = drow.Cells[i].Value;
}
dt.Rows.Add(myrow);
}
答案 0 :(得分:0)
我可以使用以下代码打开我的文件:
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
ds.ReadXml("items.xml");
dataGridView1.Columns.Clear();
dataGridView1.DataSource = ds.Tables[0];
}