20

私の問題は: データソースを DataGridView にバインドするとき

BindingList<Contract> contracts = new BindingList<Contract>(Contract.GetAll());
dgEndingContracts.DataSource = contracts.Where(c => c.ExpirationDate <= nextMonth && c.IsArchived == false).ToList();

dataGridViewヘッダー行をクリックすると、すべての列SortMode = DataGridViewColumnSortMode.Automatic がソートされません。

しかし、各列を手動で作成し、dataGridView の各行を作成してデータを入力し、列の並べ替えモードを自動に設定すると、並べ替えは正常に機能します。

違いは何ですか?最初のアプローチでソートを有効にするにはどうすればよいですか?

4

2 に答える 2

69

私は解決策を見つけました。

DataGridView はソートできないか、List <T>またはソートできないようですBindingList<T>

だから私はからのコードclass SortedBindingList<T>に基づいて追加しました:そして今、私の列をソートすることができます。DataGridView

助けてくれてありがとう。

于 2013-03-15T19:32:31.910 に答える
2

.ToList() は IBindingList を実装するものを返しません。次のようなものを使用します。

dgEndingContracts.DataSource = new BindingList<Contract>(contracts.Where(c => c.ExpirationDate <= nextMonth && c.IsArchived == false).ToList());
于 2013-03-15T18:59:50.340 に答える