ComboBox数据源和实体框架

时间:2013-04-09 09:44:52

标签: c# winforms entity-framework

我将数据模型实体添加到名为publishingCompanyEntities的项目中,并在我的winform中添加了ComboBox。 但是当我想将我的作者列表绑定到我的组合框中时,因为数据源已填充数据,但cmoAuthors.Items.Count返回0但cmoAuthors.DataSource.Count返回2项

        publishContext = new publishingCompanyEntities();
        cmoAuthors.DataSource = publishContext.Authors;
        cmoAuthors.DisplayMember = "FirstName";

2 个答案:

答案 0 :(得分:14)

您需要将.ToList()添加到作者实体集。

publishContext = new publishingCompanyEntities();
        cmoAuthors.DataSource = publishContext.Authors.ToList();
        cmoAuthors.DisplayMember = "FirstName";
        cmoAuthors.Invalidate();

原因是EntitySet 不是实际的集合。它是一个查询(IQueryable),似乎ComboBox不是聪明的,应该检测到它。

调用ToList()publishContext.Authors实现为对象。

由于某种原因,ComboBox不会更新它Items Collection,然后检测到新的DataSource。 Invalidate()强制Control重绘iself,并在此过程中更新其Items集合。

答案 1 :(得分:3)

您需要提供valuemember属性。 ValueMember

cmoAuthors.DisplayMember = "FirstName";
cmoAuthors.ValueMember = "yourValueProperty";