我想在数据表中保存多行,但它不起作用。输出错误(ArgumentException)是: row已经属于另一个表。
我的代码:
当我在第二个表单中单击“确定”时,它将执行以下代码:
private void writerow()
{
DataRow r = settings.NewRow();
r["Folder"] = folderTextBox.Text;
r["Filter"] = filterTextBox.Text;
r["Subject"] = subjectTextBox.Text;
r["Body"] = bodyTextBox.Text;
FolderWatch.setfolderasdatarow(r); // save in a static List<DataRow>
Foldersetting = settings;
}
private DataTable Foldersetting
{
get { return datatblfoldersetting; }
set { datatblfoldersetting = value; }
}
点击第一个表单中的保存图标即可:
foreach (DataRow d in FolderWatch.getfolderasdatarow())
{
Foldersetting.Rows.Add(d);
}
Foldersetting.WriteXml(ConfigurationPath + "config.xml");
答案 0 :(得分:1)
答案 1 :(得分:0)
异常消息很明确; “行已经属于另一个表。” 你不能添加另一个dataTable成员的行。
d无法添加Foldersetting.Rows。
你应该使用
var fr = Foldersetting.NewRow();
并将d列映射到添加的fr行。最简单的样本。
fr["column1"] = d["column1"];
fr["column2"] = d["column2"];