Автоматическая сортировка данных DataGridView не работает, если привязка данных

Моя проблема: когда я привязываю datasource к DataGridView

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

и установите для каждого столбца значение SortMode = DataGridViewColumnSortMode.Automatic когда я нажимаю на строки заголовка dataGridView, не сортирует.

Но когда я вручную создаю каждый столбец, создавайте и заполняйте данные каждой строкой dataGridView, а режим сортировки столбцов - автоматически, сортировка работает нормально.

В чем разница и как включить сортировку в первом подходе?

Ответ 1

Я нашел решение.

Кажется, что DataGridView не может сортировать либо List <T>, либо BindingList<T>

Итак, я добавил class SortedBindingList<T> на основе кода из: и теперь мой DataGridView может сортировать столбцы.

Спасибо за помощь ребятам.

Ответ 2

.ToList() не возвращает то, что реализует IBindingList. Используйте что-то, например thtat:

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