我的表单上有一个名为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();
}
每行的值和文字?
我见过的其他示例使用了combobox
和DataTextField
属性,但这些似乎不适用于我。
我的DataValueField
语句中是否遗漏了一个可以访问using
和DataTextField
属性的引用?
这是我的'使用'声明:
DataValueField
编辑:我无法使用DataTextField和DataValueField属性。这是因为它们是System.Web.UI的一部分,这是我正在使用的winform?
答案 0 :(得分:5)
您需要先设置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();
答案 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;