无法在datatable中保存多个datarow

时间:2014-02-07 09:31:34

标签: c#

我想在数据表中保存多行,但它不起作用。输出错误(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");

2 个答案:

答案 0 :(得分:1)

您无法将DataRow添加到已属于另一个DataTable的{​​{1}}。

使用此Add的重叠代替创建新的DataTable

DataRow

答案 1 :(得分:0)

异常消息很明确; “行已经属于另一个表。” 你不能添加另一个dataTable成员的行。

d无法添加Foldersetting.Rows。

你应该使用

var fr = Foldersetting.NewRow();

并将d列映射到添加的fr行。最简单的样本。

fr["column1"] = d["column1"];
fr["column2"] = d["column2"];