Как я могу сохранить правильный ValueMember ComboBox в лица / DB?

Как я могу сохранить правильный ValueMember ComboBox в лица / DB? Моя Winform имеет ComboBox, которые принимают значения из сущностей таблицы данных поиска, как показано в следующем коде:

    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.SelectedValue в переменной (ch) и сохранил эту переменную в TextBox.Text. То, что отображается в TextBox.Text, это DisplayMember из Combo, а не ValueMember.

Чтобы проверить почему, я добавил MessageBox в код, чтобы увидеть vaslue 'ch'; он показывает правильное значение ValueMember.

Как может быть так, что в MessageBox 'ch' имеет одно значение, а в TextBox.Text - другое?

Все, что я хотел, это извлечь список поиска из сущностей LuData, показать выбор по имени в ComboBox и сохранить значение с помощью кода в базе данных.

1 ответ

Попробуй это:

chargedToTextBox.Text = chargedToComboBox.SelectedItem.ToString();
Другие вопросы по тегам