将List <T>绑定到WinForm中的DataGridView

我上课了


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不会显示新的更新列表。它只显示我之前添加的两行。


那么问题是什么?


每次重新绑定都很有效。但是当我DataTable每次进行一些更改时都绑定到网格时,DataTable没有任何ReBind需要myGrid。


如何在不重新绑定的情况下解决它?


小唯快跑啊
浏览 1466回答 3
3回答

开心每一天1111

列表未实现,IBindingList因此网格不知道您的新项目。将DataGridView绑定到一个BindingList<T>。var list = new BindingList<Person>(persons);myGrid.DataSource = list;但我甚至会进一步将你的网格绑定到一个 BindingSourcevar list = new List<Person>(){&nbsp; &nbsp; new Person { Name = "Joe", },&nbsp; &nbsp; new Person { Name = "Misha", },};var bindingList = new BindingList<Person>(list);var source = new BindingSource(bindingList, null);grid.DataSource = source;

慕村225694

每次向List添加新元素时,都需要重新绑定Grid。就像是:List<Person> persons = new List<Person>();persons.Add(new Person() { Name = "Joe", Surname = "Black" });persons.Add(new Person() { Name = "Misha", Surname = "Kozlov" });dataGridView1.DataSource = persons;// added a new itempersons.Add(new Person() { Name = "John", Surname = "Doe" });// bind to the updated sourcedataGridView1.DataSource = persons;
打开App,查看更多内容
随时随地看视频慕课网APP