1

我的表格上有一个combobox电话ddCourses。我正在尝试使用 LINQ 表达式加载它,但是当我运行程序时,combobox它显示的是我使用 LINQ 语句加载的值(COURSE_ID)和文本(COURSE_TITLE),而不仅仅是文本(我想要值,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

我见过的其他示例已经使用DataTextFieldDataValueField属性,但这些似乎对我不可用。

我是否在我的using陈述中遗漏了允许我访问DataTextFieldandDataValueField属性的参考?

这是我的“使用”语句:

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?

4

4 回答 4

5

您需要先设置DisplayMemberand ValueMember

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();
于 2013-09-18T19:27:45.340 回答
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 ";
于 2013-09-18T19:28:43.887 回答
1

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

cmbbox.ValueMember // value selected

cmbbox.DisplayMember // value display 
于 2013-09-18T19:29:22.653 回答
1

您可以从包含所需属性的查询中返回一个类,而不是返回匿名类型。然后覆盖该类的 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;
于 2013-09-18T19:35:08.877 回答