我将数据模型实体添加到名为publishingCompanyEntities
的项目中,并在我的winform中添加了ComboBox。
但是当我想将我的作者列表绑定到我的组合框中时,因为数据源已填充数据,但cmoAuthors.Items.Count
返回0但cmoAuthors.DataSource.Count
返回2项
publishContext = new publishingCompanyEntities();
cmoAuthors.DataSource = publishContext.Authors;
cmoAuthors.DisplayMember = "FirstName";
答案 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";