C# DataGridView无法将行添加为";控件是数据绑定的“;加载XML后

C# DataGridView无法将行添加为";控件是数据绑定的“;加载XML后,c#,xml,datagridview,databound-controls,C#,Xml,Datagridview,Databound Controls,我已经通过加载到数据集从XML文件填充了DataGridView。但是,在加载数据后,由于出现以下错误,我无法再在运行时插入行: “当控件为数据绑定时,无法以编程方式将行添加到datagridview的行集合” 我理解我认为问题的概念。如果我的XML文件仅包含7行,并且是DataGridView的源,那么它将绑定到7行,并且无法添加更多行,但是我希望用户能够动态更改这一行,然后重新保存XML。我可以知道如何重新保存,只是不知道如何“解锁”行问题 非常感谢,, TomDataGridView的数据

我已经通过加载到数据集从XML文件填充了DataGridView。但是,在加载数据后,由于出现以下错误,我无法再在运行时插入行:

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

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

非常感谢,,
Tom

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

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

添加到
数据行

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

ds.Tables["TableName"].Rows.Add(dr);
ds.WriteXml(@"C:\setup.xml");
dataGridView1.DataSource = ds.Tables["TableName"];
保存到
XML

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

ds.Tables["TableName"].Rows.Add(dr);
ds.WriteXml(@"C:\setup.xml");
dataGridView1.DataSource = ds.Tables["TableName"];
重新填充
DataGridView

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

ds.Tables["TableName"].Rows.Add(dr);
ds.WriteXml(@"C:\setup.xml");
dataGridView1.DataSource = ds.Tables["TableName"];

但是,这假设您的名为
ds
(在本例中)的
数据集
是全局声明的。

您如何尝试插入导致该错误的行?我在DGV上高亮显示该行,并通过单击按钮使用此代码dataGridView1.Rows.insert(dataGridView1.CurrentRow.Index);:这可能会有帮助:“为什么不先添加到DataRow,然后保存到XML,然后重新填充DataGridView”,因为用户可能希望继续添加和保存,然后再添加更多内容……不要让用户直接添加到
DataGridView
,而是添加到
Textbox
,例如,然后执行上面的代码。在这种情况下,他们可以随意添加。这不够灵活。。。使用DGV的电源,然后受有限文本框的限制是没有意义的