我无法相信这项简单任务有多难。
我有以下代码:
cboCountry.ValueMember = "ID";
cboCountry.DisplayMember = "Title";
var countries = from c in context.Set<sc_Countries>()
orderby c.Title
select new { c.ID, c.Title };
现在,我想用这个集合填充ComboBox cboCountry
,然后我想选择ID(值)&#34; US&#34;的列表项。
我可以使用cboCountry.Items.AddRange(countries.ToList())
将项目添加到ComboBox,但cboCountry.SelectedValue = "US"
没有效果。
接下来,我尝试使用cboCountry.DataSource = countries
添加集合,但这只是将控件列表留空。
当然,必须有一种简单的方法来完成这项微不足道的任务。任何人都可以提供缺少的成分吗?
答案 0 :(得分:2)
在您的ToList()
声明中致电LINQ
之前,您实际上并未从数据库中获取数据:
var countries = (from c in context.Set<sc_Countries>()
orderby c.Title
select new { c.ID, c.Title }).ToList();
现在你应该可以设置DataSource
等,就像你一样:
cboCountry.ValueMember = "ID";
cboCountry.DisplayMember = "Title";
cboCountry.DataSource = countries;
cboCountry.SelectedValue = "US"
编辑:
现在我正在重新阅读您的问题,看起来您已经在调用countries.ToList()
,但使用的是Items.AddRange
。我在尝试时看到了同样的事情。您似乎必须设置DataSource
而不是使用Items.AddRange
,SelectedValue
才能正常工作。