0

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;

リストにアイテムが含まれていて、データソースがリストに設定されている場合でも、何も表示されません。なぜこれが起こっているのか理解できません。おそらく、本当に単純な何かを見落としているのかもしれませんが、問題がどこから来ているのかわかりません。

どんな助けでも素晴らしいでしょう。

4

1 に答える 1

1

プロパティを使用するようにクラスを変更すると、datagridview にリストが表示されます。

class ClassName
{
    public string ID { get; set; }
    public string Name { get; set; }
}
于 2012-09-25T12:04:43.567 に答える