1

如何将 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 中按名称显示选择,并通过代码将值存储在数据库中。

4

1 回答 1

1

尝试这个:

chargedToTextBox.Text = chargedToComboBox.SelectedItem.ToString();
于 2016-10-15T16:43:31.623 回答