Добрый день! В наличии:
- C# WinForm приложение
- таблица (datagridview) с 9 столбцами, один из которых содержит дату и время в формате:
"10.02.2015 12:25:36" в текстовом формате (в дату переделать нет возможности - требование заказчика) Необходимо:
- Выполнить сортировку по этому столбцу (по возрастанию) при нажатии на заголовок столбца
Примечания
С сортировкой в datagridview никогда не сталкивался.
Цитирую:
The DataGridView control provides automatic sorting, so that user can manually sort any column in the control. You can control whether a column can be sorted by setting the SortMode property of the DataGridViewColumn. You can also programmatically sort a column.
Вам нужно, чтобы пользователь мог вручную, значит надо проставить SortMode в Automatic
DataGridView может отображать таблицы тремя разными способами: с ручным заполнением, с привязанными данными и в виртуальном режиме. Если не ошибаюсь, не во всех случаях ваш способ работает. Надо уточнить как устроено у топикстартёра....
Дмитрий Макаров: Станислав Макаров: Сортировать он сортирует, но только как текст а не как дату (т.е. 01.02.2015 10:00:00; 02.01.2015 11:45:00; 14.07.2015 10:00:00 а надо 02.01.2015 11:45:00; 01.02.2015 10:00:00; 14.07.2015 10:00:00)
Иван Выров тогда можете: а) попробовать все-таки передавать дату, а не текст, и проставить своё форматирование; б) отсортировать вручную в режиме Programmatic
Там указан пример реализации IComparer`а, который нужно дать методу сорт. Вам нужно изменить у класса RowComparer метод Compare. В вашей реализации сравнения двух DataGridViewRow вам нужно выделить содержимое ячейки с текстом даты, распарсить с помощью DateTime.Parse и выдать результат сравнения дат.