nam*_*mco 85 c# grid binding datagridview list
我上课了
class Person{
public string Name {get; set;}
public string Surname {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
和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;
Run Code Online (Sandbox Code Playgroud)
没有问题.myGrid显示两行,但是当我向persons列表中添加新项目时,myGrid不会显示新的更新列表.它只显示我之前添加的两行.
那么问题是什么?
每次重新绑定都很有效.但是当我DataTable每次进行一些更改时都绑定到网格时,DataTable没有任何ReBind需要myGrid.
如何在不重新绑定的情况下解决它?
Jür*_*ock 164
列表未实现,IBindingList因此网格不知道您的新项目.
将DataGridView绑定到一个BindingList<T>.
var list = new BindingList<Person>(persons);
myGrid.DataSource = list;
Run Code Online (Sandbox Code Playgroud)
但我甚至会进一步将你的网格绑定到一个 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;
Run Code Online (Sandbox Code Playgroud)
每次向列表添加新元素时,都需要重新绑定网格。就像是:
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 item
persons.Add(new Person() { Name = "John", Surname = "Doe" });
// bind to the updated source
dataGridView1.DataSource = persons;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
218148 次 |
| 最近记录: |