我正在尝试使用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(只需通过新的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;
即使列表中包含项目,并且数据源设置为列表,也不会显示任何内容。我无法理解为什么会发生这种情况,也许我忽略了一些非常非常简单的事情,但我无法看到问题的来源。
任何帮助都会很棒。
答案 0 :(得分:1)
更改您的班级以使用属性,datagridview将显示列表。
class ClassName
{
public string ID { get; set; }
public string Name { get; set; }
}