我正在尝试使用 DataGridView 进行显示,但得到了一些奇怪的结果。
当我使用匿名类型设置数据源时:
var displayList = CreateAnAnonymousBindingList(new { prop1 = string. Empty ...etc... } );
displayList.AllowNew = true; //The property in the DataGridView is set in the designer
var list = from someEntity in entities.EntityGroup //I want some of the fields from each entity
select new { prop1 = someEntity.prop1...etc...};
foreach(item in list)
{
displayList.add(item);
}
form.dataGridView.DataSource = displayList;
我要的数据显示出来了,但是我不能添加新的项目,有匿名类型导致的异常。我知道,这是因为它是匿名类型并且没有构造函数。
问题是,当我使用相同类型(甚至名称与匿名类型)创建一个具体类时,创建一个 BindingList(只需通过 new BindingList())并向其中添加项目,例如:
BindingList<ClassName> displayList = new BindingList<ClassName>();
displayList.AllowNew = true;
var list = from someEntity in entities.EntityGroup
select someEntity;
foreach(var item in list)
{
ClassName temp = new ClassName();
/* Assign all the properties I want*/
displayList.Add(temp);
}
form.dataGridView.DataSource = displayList;
即使列表中有项目,并且数据源设置为列表,也不会显示任何内容。我无法弄清楚为什么会发生这种情况,也许我忽略了一些非常非常简单的事情,但我看不出问题出在哪里。
任何帮助都会很棒。