填充ComboBox的值和文本

时间:2013-09-18 19:18:42

标签: c# winforms linq combobox

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

这是我的代码:

combobox

如何设置 private void LoadDropDowns() { var db = new DataClasses1DataContext(); ddCourse.DataSource = (from c in db.COURSE_MASTERs select new { c.COURSE_ID, c.COURSE_TITLE }).ToList(); } 每行的值和文字?

我见过的其他示例使用了comboboxDataTextField属性,但这些似乎不适用于我。

我的DataValueField语句中是否遗漏了一个可以访问usingDataTextField属性的引用?

这是我的'使用'声明:

DataValueField

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

4 个答案:

答案 0 :(得分:5)

您需要先设置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();

答案 1 :(得分:1)

需要显示和值成员。

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 ";

答案 2 :(得分:1)

你需要宣布两个更合适的地方:

cmbbox.ValueMember // value selected

cmbbox.DisplayMember // value display 

答案 3 :(得分:0)

您可以从包含所需属性的查询返回一个类,而不是返回匿名类型。然后重写此类的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;