如何将 ComboBox 的正确 ValueMember 保存到实体/数据库?我的 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() 上,我收到以下错误:在 EntityFramework.dll 中发生“System.Data.Entity.Validation.DbEntityValidationException”
为了找出发生了什么,我在表单中添加了一个 TextBox,并尝试将我认为是 ComboBox.ValueMember 的内容存储在其中。为此,我将 ComboBox.SelectedValue 存储在变量 (ch) 中,并将该变量存储在 TextBox.Text 中。TextBox.Text 中显示的是 Combo 的 DisplayMember,而不是 ValueMember。
为了测试原因,我在代码中添加了一个 MessageBox 以查看 'ch' 的值;它显示了 ValueMember 的正确值。
怎么可能在 MessageBox 'ch' 中有一个值,而在 TextBox.Text 中有另一个值?
我想要的只是从 LuData 实体中提取一个查找列表,在 ComboBox 中按名称显示选择,并通过代码将值存储在数据库中。