当“控件为数据绑定”时,DataGridView无法添加行.在XML加载之后

本文关键字:添加行 XML 之后 加载 DataGridView 控件 数据绑定 | 更新日期: 2023-09-27 18:16:51

我已经通过加载数据集从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。我知道如何重新保存,只是不知道如何"解锁"行问题。

很多谢谢,汤姆

当“控件为数据绑定”时,DataGridView无法添加行.在XML加载之后

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

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

添加到DataRow:

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

Save to XML:

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

重新填充DataGridView:

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

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