我有一堂课
class Person{ public string Name {get; set;} public string Surname {get; set;} }
并且List<Person>向其中添加一些项目。该清单已绑定到我的DataGridView。
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不会显示新的更新列表。它仅显示我之前添加的两行。
myGrid
persons
那是什么问题呢?
每次重新绑定效果很好。但是当我将a绑定DataTable到网格时,每次进行一些更改时,DataTable都不需要ReBind myGrid。
DataTable
如何解决它而不必每次都重新绑定?
列表未实现,IBindingList因此网格不知道您的新项目。
IBindingList
将您的DataGridView绑定到BindingList<T>。
BindingList<T>
var list = new BindingList<Person>(persons); myGrid.DataSource = list;
但我什至会更进一步,将您的网格绑定到 BindingSource
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;