0

EF には Entity,Stuff があり、次のコードを使用して、Stuffs テーブル内のすべての Stuff を Gridview コンボボックスに入力したい:

 var stuffs = from t in Database.Context.Stuffs
              select t;
 return stuffs.ToList<Stuff>();

 datagridview.datasource=stuffs;

私はToStringメソッドをオーバーライドします:

 public override string ToString()
 {
    return this.Name + "-" + this.CompanyName;
 }

しかし、このエラーを取得します:

datagridviewコンボボックスのセル値が無効なエラー

4

2 に答える 2

0

複数の列を表示するコンボボックスを作成しようとしていますか?

コンボ ボックスの xaml コードを送信して、どのようにバインドしますか?

その場合、おそらく必要なのは、ToString() をオーバーライドして各値を文字列で返すのではなく、クラスのプロパティに各列をバインドすることです。

于 2013-03-28T16:13:13.150 に答える
0

これが最善の方法だと言っているわけではありません。私は WinForms に詳しくありません。

しかし、このサンプルでは、​​あなたが望むようです: ここに画像の説明を入力

class Stuff
    {
        public string Name { get; set; }
        public string CieName { get; set; }

        public override string ToString()
        {
            return string.Format("{0}-{1}", Name, CieName);
        }
    }

    public partial class Form1 : Form
    {
        private List<Stuff> _myList = new List<Stuff>()
                                          {
                                              new Stuff() {Name = "Anne", CieName = "Google"},
                                              new Stuff() {Name = "Creg", CieName = "Yahoo"}
                                          };

        public Form1()
        {
            InitializeComponent();

            BindComboBoxColumnDataSource();
        }

        private void BindComboBoxColumnDataSource()
        {
            var comboColumn = dataGridView1.Columns["ComboBoxColumn"] as DataGridViewComboBoxColumn;

            if (comboColumn != null)
                comboColumn.DataSource = _myList;
        }
    }
于 2013-03-29T12:15:10.263 に答える