小编典典

装订清单 到WinForm中的DataGridView

c#

我有一堂课

class Person{
      public string Name {get; set;}
      public string Surname {get; set;}
}

并且List<Person>向其中添加一些项目。该清单已绑定到我的DataGridView

List<Person> persons = new List<Person>();
persons.Add(new Person(){Name="Joe", Surname="Black"});
persons.Add(new Person(){Name="Misha", Surname="Kozlov"});
myGrid.DataSource = persons;

没有问题。myGrid显示两行,但是当我向persons列表中添加新项目时,myGrid不会显示新的更新列表。它仅显示我之前添加的两行。

那是什么问题呢?

每次重新绑定效果很好。但是当我将a绑定DataTable到网格时,每次进行一些更改时,DataTable都不需要ReBind myGrid

如何解决它而不必每次都重新绑定?


阅读 264

收藏
2020-05-19

共1个答案

小编典典

列表未实现,IBindingList因此网格不知道您的新项目。

将您的DataGridView绑定到BindingList<T>

var list = new BindingList<Person>(persons);
myGrid.DataSource = list;

但我什至会更进一步,将您的网格绑定到 BindingSource

var list = new List<Person>()
{
    new Person { Name = "Joe", },
    new Person { Name = "Misha", },
};
var bindingList = new BindingList<Person>(list);
var source = new BindingSource(bindingList, null);
grid.DataSource = source;
2020-05-19