在XML加载后,DataGridView无法添加行作为“控件是数据绑定的”

时间:2014-08-07 11:35:03

标签: c# xml datagridview databound-controls

我已经通过加载到DataSet从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。我知道如何重新保存,而不是如何“解锁”行问题。

非常感谢, 汤姆

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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(在本例中)是全局声明的。