如何将ComboBox的正确ValueMember保存到entities/db?我的Winform有从查找数据表的实体中获取值的组合框,如下面的代码所示:
private void FillComboBoxes()
{
chargedToComboBox.Invalidate();
ModelCS ctx = new ModelCS();
var query1 = from a in ctx.LuDatas
where a.Category == "Charged To" && a.IsActive == true
select new { LuValueMember = a.LuValueMember,
LuDisplayMember = a.LuDisplayMember };
var chargedTo = query1.ToList();
chargedToComboBox.DataSource = chargedTo;
chargedToComboBox.DisplayMember = "LuDisplayMember";
chargedToComboBox.ValueMember = "LuValueMember";
string ch = chargedToComboBox.SelectedValue.ToString();
MessageBox.Show(ch); // variable ch shows the CORRECT
// ValueMember
chargedToTextBox.Text = ch; // variable ch show the UNDESIRABLE
// DisplayMember
this.Refresh();
}
上SaveChanges()我得到以下错误:"System.Data.Entity.Validation。DbEntityValidationException'在EntityFramework.dll中发生
为了找出发生了什么,我在表单中添加了一个TextBox,并试图将其存储在我认为是ComboBox.ValueMember的内容中。为此,我存储了ComboBox。并将该变量存储在TextBox.Text中。文本框中显示的内容。Text是Combo的DisplayMember,而不是ValueMember。
为了测试原因,我在代码中添加了一个MessageBox来查看'ch'的值;它显示ValueMember的正确值。
怎么可能在MessageBox中'ch'有一个值,而在TextBox中。文本它有另一个?
我想要的只是从LuData实体中提取一个查找列表,在ComboBox中按名称显示选项,并通过代码将值存储在数据库中。
试试这个:
chargedToTextBox.Text = chargedToComboBox.SelectedItem.ToString();