4

という名前のプロジェクトにデータ モデル エンティティを追加publishingCompanyEntitiesし、winform に ComboBox を追加しました。しかし、データソースがデータで満たされているため、作成者のリストをコンボボックスにバインドしたい場合、cmoAuthors.Items.Count0をcmoAuthors.DataSource.Count返しますが2項目を返します

        publishContext = new publishingCompanyEntities();
        cmoAuthors.DataSource = publishContext.Authors;
        cmoAuthors.DisplayMember = "FirstName";
4

2 に答える 2

15

.ToList()Authors EntitySetに追加する必要があります。

publishContext = new publishingCompanyEntities();
        cmoAuthors.DataSource = publishContext.Authors.ToList();
        cmoAuthors.DisplayMember = "FirstName";
        cmoAuthors.Invalidate();

その理由は、EntitySet が実際のコレクションではないためです。これはクエリ ( IQueryable) であり、ComboBox はそれを検出するほどスマートではないようです。

ToList()マテリアライズpublishContext.Authorsをオブジェクトに呼び出します。

何らかの理由で、ComboBox が Collection を更新せずItems、新しい DataSource が検出されます。Invalidate()Control に自分自身を強制的に再描画させ、その過程で Items コレクションを更新します。

于 2013-04-09T10:40:32.327 に答える
3

valuemember プロパティを指定する必要があります。値メンバー

cmoAuthors.DisplayMember = "FirstName";
cmoAuthors.ValueMember = "yourValueProperty";
于 2013-04-09T10:01:18.767 に答える