1

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.SelectedValue を変数 (ch) に格納し、この変数を TextBox.Text に格納しました。TextBox.Text に表示されるのは、ValueMember ではなく、Combo の DisplayMember です。

理由をテストするために、コードに MessageBox を追加して、「ch」の値を確認しました。ValueMember の正しい値を示します。

MessageBox 'ch' に 1 つの値があり、TextBox.Text に別の値があるのはどうしてでしょうか?

私が望んでいたのは、LuData エンティティからルックアップ リストを抽出し、選択肢を名前で ComboBox に表示し、値をコードでデータベースに保存することだけでした。

4

1 に答える 1

1

これを試して:

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