0

我正在尝试使用 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;

即使列表中有项目,并且数据源设置为列表,也不会显示任何内容。我无法弄清楚为什么会发生这种情况,也许我忽略了一些非常非常简单的事情,但我看不出问题出在哪里。

任何帮助都会很棒。

4

1 回答 1

1

更改您的类以使用属性,datagridview 将显示列表。

class ClassName
{
    public string ID { get; set; }
    public string Name { get; set; }
}
于 2012-09-25T12:04:43.567 回答