【问题标题】:Populating Value and Text of ComboBox填充 ComboBox 的值和文本
【发布时间】:2013-09-23 16:52:11
【问题描述】:

我的表单上有一个名为ddCoursescombobox。我正在尝试使用 LINQ 表达式加载它,但是当我运行程序时,combobox 显示的是我使用 LINQ 语句加载的值 (COURSE_ID) 和文本 (COURSE_TITLE),而不仅仅是文本 (I想要值,COURSE_ID,隐藏)。

这是我的代码:

    private void LoadDropDowns()
    {
        var db = new DataClasses1DataContext();
        ddCourse.DataSource = (from c in db.COURSE_MASTERs
                               select new { c.COURSE_ID, c.COURSE_TITLE }).ToList();
    }

如何设置combobox 每一行的Value 和Text?

我见过的其他示例使用了DataTextFieldDataValueField 属性,但我似乎无法使用这些属性。

我是否在我的 using 语句中遗漏了一个引用,该引用允许我访问 DataTextFieldDataValueField 属性?

这是我的“使用”语句:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

编辑:我无法使用 DataTextField 和 DataValueField 属性。这是因为它们是 System.Web.UI 的一部分,而这是我正在使用的 winform?

【问题讨论】:

    标签: c# winforms linq combobox


    【解决方案1】:

    你需要先设置DisplayMemberValueMember

    var db = new DataClasses1DataContext();
    ddCourse.DisplayMember = "COURSE_TITLE";
    ddCourse.ValueMember = "COURSE_ID";
    ddCourse.DataSource = (from c in db.COURSE_MASTERs
                            select new { c.COURSE_ID, c.COURSE_TITLE }).ToList();
    

    【讨论】:

    • 工作就像一个魅力!非常感谢!计时器到时,我会将其标记为答案。
    【解决方案2】:

    需要显示和值成员。

    ddCourse.DataSource = (from c in db.COURSE_MASTERs 
                           select new {course_id = c.COURSE_ID, course_title = c.COURSE_TITLE }).ToList();
    comboBox.DisplayMember="course_title";
    comboBox.ValueMember="course_id ";
    

    【讨论】:

    • 应该区分大小写。记住这是 c#
    【解决方案3】:

    您需要再声明 2 个适当性:

    cmbbox.ValueMember // value selected
    
    cmbbox.DisplayMember // value display 
    

    【讨论】:

      【解决方案4】:

      您可以从查询中返回一个包含所需属性的类,而不是返回匿名类型。然后覆盖该类的 ToString() 方法并使用 ToString() 方法返回所需的属性。 ToString() 方法结果将显示在 Combobox 上。

      这里的示例代码块对我有用。

          public class ComboItem
              {
                  public string Text { get; set; }
                  public string Value { get; set; }
      
                  public override string ToString()
                  {
                      return Text;
                  }
              }
      
        private void Form1_Load(object sender, EventArgs e)
              {
                  List<ComboItem> itemList = new List<ComboItem>()
                  {
                      new ComboItem() { Text="A", Value="1"},
                      new ComboItem() { Text="B", Value="2"},
                      new ComboItem() { Text="C", Value="3"},
                      new ComboItem() { Text="D", Value="4"},
                      new ComboItem() { Text="E", Value="5"}
                  };
      
                  comboBox1.DataSource = itemList;
              }
      

      您可以使用以下代码获取 selectedItem 的值:

       string selectedVal = (comboBox1.SelectedItem as ComboItem).Value;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 2012-07-09
        • 2020-08-13
        • 2017-02-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多