0

我通过加载到数据集从 XML 文件填充了 DataGridView。但是,在我加载数据后,我无法再在运行时插入行,因为我收到此错误:

“当控件绑定数据时,无法以编程方式将行添加到 datagridview 的行集合中”

    private void LoadBtn_Click(object sender, EventArgs e)
    {
        DTable.Clear();
        DTable.Reset();

        var ds = new DataSet();
        ds.ReadXml(@"C:\setup.xml", XmlReadMode.ReadSchema);

        foreach (DataGridViewColumn col in dataGridView1.Columns)
        {
            DTable.Columns.Add(col.Name);
            col.DataPropertyName = col.Name;
        }

        //dataGridView1.AutoGenerateColumns = false;
        dataGridView1.DataSource = ds.Tables["TableName"];
    }

我理解我认为的问题的概念。如果我的 XML 文件只包含 7 行并且是 DataGridView 的源,那么它绑定到 7 行并且不能添加更多行,但我希望用户能够动态更改它然后重新保存 XML。我可以知道如何重新保存,只是不知道如何“解锁”行问题。

非常感谢,汤姆

4

2 回答 2

0

您的 DataGridView 的数据源是表。在这种情况下,您可以向表中添加行,它们将显示在 DataGridView 中。

于 2014-08-07T11:49:19.387 回答
0

为什么不DataRow先添加到然后保存到XML然后重新填充DataGridView,例如:

添加到DataRow

DataRow dr = ds.Tables["TableName"].NewRow(); 
dr["FieldName1"] = value1; 
dr["FieldName2"] = value2;

ds.Tables["TableName"].Rows.Add(dr);

保存到XML

ds.WriteXml(@"C:\setup.xml");

重新填充DataGridView

dataGridView1.DataSource = ds.Tables["TableName"];

但这假设您的DataSet命名ds(在这种情况下)是全局声明的。

于 2014-08-07T12:07:35.840 回答