填充组合框的值和文本
本文关键字:文本 组合 填充 | 更新日期: 2023-09-27 18:31:55
我的表单上有一个名为ddCourses
的combobox
。 我尝试使用 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
每行的值和文本?
我看到的其他例子使用了DataTextField
和DataValueField
属性,但这些似乎对我来说不可用。
我的 using
语句中是否缺少允许我访问 DataTextField
和 DataValueField
属性的引用?
这是我的"使用"语句:
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的一部分,这是我正在使用的通知吗?
您需要
先设置DisplayMember
和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();
需要显示和值成员。
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