C# 如何将组合框的正确ValueMember保存到entities/db?
如何将组合框的正确ValueMember保存到entities/db? My Winform具有从查找数据选项卡的实体获取值的组合框,如以下代码所示:C# 如何将组合框的正确ValueMember保存到entities/db?,c#,winforms,combobox,valuemember,C#,Winforms,Combobox,Valuemember,如何将组合框的正确ValueMember保存到entities/db? My Winform具有从查找数据选项卡的实体获取值的组合框,如以下代码所示: private void FillComboBoxes() { chargedToComboBox.Invalidate(); ModelCS ctx = new ModelCS(); var query1 = from a in ctx.LuDatas
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”
为了了解发生了什么,我在表单中添加了一个文本框,并尝试将我认为是ComboBox.ValueMember的内容存储在表单中。为此,我将ComboBox.SelectedValue存储在变量(ch)中,并将此变量存储在TextBox.Text中。文本框中显示的内容。文本是组合的DisplayMember,而不是ValueMember
为了测试原因,我在代码中添加了一个MessageBox来查看'ch'的值;它显示ValueMember的对应值
为什么在MessageBox中“ch”有一个值而在TextBox中“Text”有另一个值
我只想从LuData实体中提取一个查找列表,在组合框中按名称显示选项,并在数据库中按代码存储值。尝试以下操作:
chargedToTextBox.Text = chargedToComboBox.SelectedItem.ToString();
如果您的表单有一些“副作用”,可能您的
chargedToTextBox
有一些事件处理程序,在您将其设置为ch
后,这些事件处理程序会更新值。您不需要使用this.Refresh
来重新绘制整个表单。您只更改了已存在控件的值,因此无需重新绘制表单。感谢Fabio提供this.Refresh()。把它拿出来。也使用了阴影下面的线条。没有变化。将进一步研究。您能否检查整个表单中是否出现了chargedToTextBox?也许你在用它做数据绑定?您可以订阅其TextChanged
-事件,并在事件处理程序中设置断点,以在stacktrace中查看在何种情况下谁在更改文本。感谢您的快速响应。对不起,没用。“chargedToComboBox.SelectedItem.ToString()”仍然保留DisplayMember,而不是所需的ValueMember。