【问题标题】:Manually Populating and Selecting ComboBox Items手动填充和选择 ComboBox 项
【发布时间】:2014-05-14 09:14:07
【问题描述】:

我不敢相信这个简单的任务有多么困难。

我有以下代码:

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(值)为“US”的列表项。

我可以使用 cboCountry.Items.AddRange(countries.ToList()) 将项目添加到 ComboBox,但随后 cboCountry.SelectedValue = "US" 无效。

接下来,我尝试使用cboCountry.DataSource = countries 添加集合,但这只是将控制列表留空。

当然,必须有一种简单的方法来完成这项微不足道的任务。谁能提供缺少的成分?

【问题讨论】:

    标签: c# winforms combobox datasource


    【解决方案1】:

    在您对 LINQ 语句调用 ToList() 之前,您实际上并没有从数据库中获取数据:

    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 工作。

    【讨论】:

    • 是的,这行得通!谢谢。我使用的是ToList(),但只使用了AddRange()。那行得通,但我无法设置SelectedValue。另外,我习惯了 ASP.NET 中的 DropDownList,它不需要数据源在列表中。但是使用 ComboBox 可以。我正在运行。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多