DataGridViewを使用して表示しようとしていますが、奇妙な結果が得られます。
次のような匿名タイプでデータソースを設定すると、次のようになります。
var displayList = CreateAnAnonymousBindingList(new { prop1 = string. Empty ...etc... } );
displayList.AllowNew = true; //The property in the DataGridView is set in the designer
var list = from someEntity in entities.EntityGroup //I want some of the fields from each entity
select new { prop1 = someEntity.prop1...etc...};
foreach(item in list)
{
displayList.add(item);
}
form.dataGridView.DataSource = displayList;
必要なデータが表示されますが、新しいアイテムを追加できません。匿名タイプによる例外があります。これは、匿名型であり、コンストラクターがないためです。
問題は、匿名型と同じ型、さらには名前を使用して具象クラスを作成する場合、BindingListを作成し(単にnew BindingList()によって)、次のように項目を追加することです。
BindingList<ClassName> displayList = new BindingList<ClassName>();
displayList.AllowNew = true;
var list = from someEntity in entities.EntityGroup
select someEntity;
foreach(var item in list)
{
ClassName temp = new ClassName();
/* Assign all the properties I want*/
displayList.Add(temp);
}
form.dataGridView.DataSource = displayList;
リストにアイテムが含まれていて、データソースがリストに設定されている場合でも、何も表示されません。なぜこれが起こっているのか理解できません。おそらく、本当に単純な何かを見落としているのかもしれませんが、問題がどこから来ているのかわかりません。
どんな助けでも素晴らしいでしょう。