我有一个带有datagridview的表单和一个像这样的List:
private void Form1_Load(object sender, EventArgs e)
{
List<Person> list = new List<Person>();
list.Add(new Person("A", "An Giang"));
list.Add(new Person("B", "TP HCM"));
list.Add(new Person("C", "Tiền Giang"));
list.Add(new Person("D", "Cần Thơ"));
this.dataGridView1.DataSource = list;
list.Add(new Person("E", "Bạc Liêu")); // --> changed
this.dataGridView1.EndEdit();
this.dataGridView1.Refresh();
this.Refresh();
this.dataGridView1.Parent.Refresh();
}
我的问题是datagridview没有显示新行,尽管其数据源已更改。我尝试刷新数据网格,但它不起作用。
答案 0 :(得分:3)
签出BindingList<T>
,这是一个支持数据绑定的列表,因此它会在修改集合时触发事件。
答案 1 :(得分:1)
快速黑客表明,这会像你期望的List<t>
重新绑定:
...
list.Add(new Person("E", "Bạc Liêu")); // --> changed
dataGridView1.DataSource = null;
dataGridView1.DataSource = list;
请考虑重构以使用BindingList<Person>
而不是List<Person>
,这将按预期执行,并且您不需要刷新任何代码。实现此更改,插入Person E后的所有代码都可以删除。
答案 2 :(得分:1)
使用它对我有用:
qTableAdapter.Fill(_11DataSet.q);
答案 3 :(得分:0)
回答我的问题。我尝试使用BindingList<Person>
而不是List<Person>
来解决问题。