在Windows窗体应用程序中刷新datagridview

时间:2010-08-19 02:27:11

标签: datagridview refresh

我有一个带有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没有显示新行,尽管其数据源已更改。我尝试刷新数据网格,但它不起作用。

4 个答案:

答案 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>来解决问题。