填充组合框的值和文本

本文关键字:文本 组合 填充 | 更新日期: 2023-09-27 18:31:55

我的表单上有一个名为ddCoursescombobox。 我尝试使用 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 语句中是否缺少允许我访问 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的一部分,这是我正在使用的通知吗?

填充组合框的值和文本

您需要

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

需要显示和值成员。

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

可以从包含所需属性的查询返回类,而不是返回匿名类型。然后重写此类的 ToString() 方法,并使用 ToString() 方法返回所需的属性。ToString() 方法结果将显示在组合框上。

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

    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;

您需要再声明 2 个礼仪:

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