我已经通过加载到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。我知道如何重新保存,而不是如何“解锁”行问题。
非常感谢, 汤姆
答案 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
(在本例中)是全局声明的。