Автоматическая сортировка данных 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());