我对ADO.NET并不擅长 所以我使用了以下从Internet获得的代码 但我得到错误“位置0没有行。”@标记的行(*) 即使我可以看到使用断点传递值
DataSet ds = new DataSet();
DataTable dt = new DataTable("ProdFromDGV");
ds.Tables.Add(dt);
foreach (DataGridViewColumn col in dataGridView1.Columns)
{
dt.Columns.Add(col.HeaderText, typeof(string));
}
foreach (DataGridViewRow row in dataGridView1.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
*dt.Rows[row.Index][cell.ColumnIndex] = cell.Value.ToString();*
}
}
dt.WriteXml("table.xml");
答案 0 :(得分:0)
您需要首先创建一个DataRow类型并将其添加到DataTable中,然后才能开始分配它。
所以你的代码现在就像:
DataSet ds = new DataSet();
DataTable dt = new DataTable("ProdFromDGV");
ds.Tables.Add(dt);
foreach (DataGridViewColumn col in dataGridView1.Columns)
{
dt.Columns.Add(col.HeaderText, typeof(string));
}
foreach (DataGridViewRow row in dataGridView1.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
// This will not work, but it's something similar to this that you need here...
DataRow row = new DataRow();
dt.RowCollecion.Add(row);
// Now you can assign to the row....
dt.Rows[row.Index][cell.ColumnIndex] = cell.Value.ToString();
}
}
dt.WriteXml("table.xml");
希望这有助于一些......
答案 1 :(得分:0)
//这不起作用,但这里有类似的东西......
只需更改
DataRow row = new DataRow();
为:
DataRow row = dt.NewRow();
它会起作用。